1

タイトルに任意の数のアイテムが含まれているかどうかを確認するdlinqクエリを作成したいと思います。リストでできることは知っていますが.Contains()、アイテムにタイトルの一部が含まれているかどうかではなく、タイトルにアイテムが含まれているかどうかを確認する必要があります。例:リストに「ベーコン、チキン、ポーク」の3つのアイテムがあります。それに合わせて「鶏舎」の称号が必要です。

   var results = (from l in db.Sites
   where list.Contains(l.site_title)
   select l.ToBusiness(l.SiteReviews)).ToList();

最初の2つの答えを試してみると、エラーが発生します"Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator."

3番目の解決策は私に

メソッド'System.ObjectDynamicInvoke(System.Object [])'には、SQLへの変換がサポートされていません。 "

4

3 に答える 3

2

次のことを試してください。WhereとAnyの組み合わせを使用して、部分文字列の一致を検索できます。

var results = (from l in db.Sites
                where list.Where(x => 0 != x.IndexOf(l)).Any()
                select l.ToBusiness(l.SiteReviews)).ToList();
于 2009-03-03T03:40:42.307 に答える
1

1 つの方法は、次のようにクエリを動的に作成することです。

http://andrewpeters.net/2007/04/24/dynamic-linq-queries-contains-operator/

于 2009-03-03T06:42:53.477 に答える
1

私はついにそれを理解しました。助けてくれた親友のコーリーに感謝します。2 つの方法があります。

var resultSets = (from k in list
                  select (from b in db.Sites
                          where b.site_title.Contains(k)
                          select b.ToBusiness()).ToList<Business>()).ToList();

 List<Business> all = new List<Business>();

 for (int i = 0; i < resultSets.Count; ++i)
 {
     all.AddRange(resultSets[i]);
 }

これは、記載されていることを正常に実行する linq クエリです。同様に、SQL クエリをプレーン テキストで手動で作成することもできます。

于 2009-03-04T04:54:03.243 に答える