1

このサイトでよく検索される例外が発生しました。

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)
4

1 に答える 1