このサイトでよく検索される例外が発生しました。
System.NotSupportedExceptionLocal シーケンスは、Contains 演算子を除くクエリ演算子の LINQ to SQL 実装では使用できません。
この回答は役に立ちました。ただし、一見答えと矛盾しているように見えますが、このクエリは私にとってはうまく機能します。
return clients.Where(client =>
client.CompanyID.HasValue &&
client.Company.CompanyAssociations.Any(ass =>
localListOfSearchStrings.Any(str => ass.Contact.FullName.Contains(str))));
私の目にはまったく同じように見えるこのクエリは、例外をスローします。
return stores.Where(store =>
store.Asset.AssetOwners.Any(assetOwner =>
assetOwner.Client.CompanyID.HasValue &&
assetOwner.Client.Company.CompanyAssociations.Any(ass =>
localListOfSearchStrings.Any(str =>
ass.Contact.FullName.Contains(str)))));
レコードのリストをローカル メモリにプルして評価したくありません。
もう 1 つの問題は、 にlocalListOfSearchStrings
名または姓が含まれる可能性があることです。
だから私は本当に評価が必要です
localListOfSearchStrings.Any(str =>
CompanyAssociation.Contact.FullName.Contains(str))
ではなく、たとえば、
listOfLocalSearchStrings.Contains(CompanyAssociation.Contact.FullName)