2

Linq to Entities に参加する前にデータセットをフィルタリングしようとしていますが、それを行う方法が見つかりませんでした。私の現在のlinqクエリは、左結合を行うものです:

from m in Products
          join f in FileFolders on m.ProductCode equals f.Name into list1
          from l1 in list1.DefaultIfEmpty()
          join p in Files on l1.FileFolderID equals p.FileFolderID into list2
          // I want something like p.Name == "Test" here
          from l2 in list2.DefaultIfEmpty()                                                     
          join b in BaseReferenceFile on l2.BaseReferenceFileID equals b.BaseReferenceFileID into list3
          from l3 in list3.DefaultIfEmpty()
          select new
          {
              //select some stuff here                           
          };

「Test」という名前のファイルのみがl1で結合されるように、ファイルコレクションをフィルタリングしたいと思います。

l2 でフィルタリングを試みましl2.Name == "Test"たが、機能していません。内部結合と左結合を持つ奇妙なクエリを生成します。

どうやってやるの?

4

2 に答える 2

3
join p in Files.Where(m => m.Name == "Test") on l1.FileFolderID equals p.FileFolderID into list2
于 2013-01-24T13:05:10.910 に答える
1

これはうまくいくと思いますが、これは毎回(レコードごとに)クエリを実行します:

   join p in (from f in Files where f.Name == "Test") on l1.FileFolderID equals p.FileFolderID into list2

select の前に whereを使用するのが最善です。

          ...from l3 in list3.DefaultIfEmpty()
          where (l1 !=null ? l1.Name == "Test" : true)
          select new
          {
              //select some stuff here                           
          };
于 2013-01-25T05:44:58.613 に答える