2016-07-15 13 views
-1

私は本当にどのようにlinqにこのクエリを変換する方法を開始するか分からない。linqクエリにSQLサブを書き直し

hereを読み始め、いくつかのユーチューブの動画を探しましたが、本当にわからない。ここ

はクエリです:

select 
o.ReplacementItemID, 
o.ItemStatus, 
o.Description, 
i.ItemWarrantyID, 
o.Id as OriginalItemId 
from 
(
    select 
     id, 
     ItemStatus, 
     Description, 
     ItemWarrantyID, 
     ReplacementItemID 
    from item 
    where ItemStatus = 'obso' 
)o 
inner join Item i 
on o.ReplacementItemID = i.Id 
+0

SQLをポストして変換を依頼しないでください。少なくともクラスモデルを表示して、ナビゲーションプロパティと関連の多重度を確認します。また、どのタイプのLINQをターゲットにしているのか(エンティティには?)、*と*は自分の最初の努力を示します。彼らは、あなたが思うかもしれないよりも、私たちにもっと明らかにします。 –

+0

また、SQLは必要以上に複雑です。このサブクエリは必要ありません。代わりに、次のようにすることができます: 'from item o内部結合項目i on ... o.ItemStatus = 'obso''。 –

答えて

0

Christos provided a method chaining exampleは、ので、ここでクエリ構文の例です:それは一般的に読みやすいですので、

var results = from o in (from x in item 
         where x.ItemStatus == "obso" 
         select new 
         { 
          x.Id, 
          x.ItemStatus, 
          x.Description, 
          x.ItemWarrantyId, 
          x.ReplacementItemId 
         }) 
      join i in item 
       on o.ReplacementItemId equals i.ItemId 
      select new 
      { 
       o.ReplacementItemID, 
       o.ItemStatus, 
       o.Description, 
       i.ItemWarrantyID, 
       OriginalItemId = o.Id 
      }; 

私は、このような奇妙なもののためのクエリ構文に部分的です。 :)

1

あなたはこのような何かを試みることができる:

var result = items.Where(item => item.Status == 'obso') 
        .Select(item => new{ 
         id, 
         ItemStatus, 
         Description, 
         ItemWarrantyID, 
         ReplacementItemID 
       }).Join(items, 
         itemA => itemA.ReplacementItemID, 
         itemB => itemB.id, 
         (itemA, itemB) => new { 
          itemA.ReplacementItemID, 
          itemA.ItemStatus, 
          itemA.Description, 
          itemB.ItemWarrantyID, 
          OriginalItemId = itemA.Id 
       }); 

ためには、あなたは理解して、構文、特にjoinは、見てくださいhereをご覧ください。

関連する問題