Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将sql sub重写为linq查询_C#_Linq - Fatal编程技术网

C# 将sql sub重写为linq查询

C# 将sql sub重写为linq查询,c#,linq,C#,Linq,我真的不知道从哪里开始如何将这个查询转换成linq 开始阅读并查找一些youtube视频,但并不确定 以下是查询: select o.ReplacementItemID, o.ItemStatus, o.Description, i.ItemWarrantyID, o.Id as OriginalItemId from ( select id, ItemStatus, Description, ItemWarrantyI

我真的不知道从哪里开始如何将这个查询转换成linq

开始阅读并查找一些youtube视频,但并不确定

以下是查询:

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

您可以尝试以下方法:

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
               });
为了让您了解语法,特别是
连接
,请看一看。

,下面是一个查询语法示例:

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
             };

我偏爱这种奇怪的查询语法,因为它通常更容易阅读。:)

请不要只是发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉你的目标是什么类型的LINQ(对实体?),并展示你自己的第一次努力。它们比您想象的更清楚。而且,您的SQL比必要的更复杂。您不需要这个子查询。相反,您可以这样做:
从项目o内部连接项目i上。。。其中o.ItemStatus='obso'