C# 将sql sub重写为linq查询
我真的不知道从哪里开始如何将这个查询转换成linq 开始阅读并查找一些youtube视频,但并不确定 以下是查询: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
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'
。