2017-02-24 6 views
2

は、次のコードを点検機能:それはうまくコンパイルは(のstring.Splitを扱うことができない)

public IEnumerable<Query> GetAllQueries_FilteredOnCurrentUsersInvolvement(User user) 
{ 
    var queries = _genericUnitOfWork.GenericRepository<Query>().Get(q => 
     q.AuthorUserID == user.ID || 
     q.ConsultantUserID == user.ID || 
     q.CreatorUserID == user.ID || 
     q.EngagementPartnerUserID == user.ID || 
     q.EQCRPUserID == user.ID || 
     q.LeadPartnerUserID == user.ID || 
     q.RMPUserID == user.ID || 
     (!string.IsNullOrEmpty(q.OthersInvolvedUserIDs) && q.OthersInvolvedUserIDs.Split(',').Contains(user.ID.ToString())), 
     includeProperties: "NatureOfQuery"); 
    return queries; 
} 

を。しかし、あなたは、コードを実行すると:

{ "エンティティへのLINQは、メソッド『[] 分割可能System.String(シャア[])』メソッドを認識しない、そしてこの方法は ストア式に変換することができません。 "}

私はT-SQLコードを自分で書くことができます。エンティティへのLINQの作成方法を理解する方法は?

P.S>はthis nuget packageこれを解決することはできますか?

提案重複リンクは、この問題を解決するためにどのように任意の答えを提供していません。だから、この質問には答えられませんでした。

+1

私も今これを読んでいます:http://stackoverflow.com/questions/23929801/linq-to-entities-does-not-recognize-the-method-system-string-splitchar-m –

+0

@wkl同じエラーただし、このソリューションはここでは適用できません。 – Rob

+0

式の 'q.OthersInvolvedUserIDs.Contains(user.ID.ToString())'を大まかな事前選択として使い、スプリットされたユーザーIDを調べてメモリ内の結果を絞り込む必要があると思います。 –

答えて

0

分割操作は、クエリと一緒に送るため、SQL関数に翻訳する必要があります。これは実装されていないため動作しません。データを取得し、メモリ内の分割を実行する必要があります。

関連する問題