这段代码是我写的。有用。它易于阅读且易于调试。
然而,为了今天几个小时的学习目的,我尝试使用 JOIN
或 GroupJoin
或类似的东西将其转换为某种 LINQ。因为如果你看一下 WHERE
子句,我的直觉告诉我我可以通过某种 JOIN
来做到这一点,并摆脱 foreach
但是好吧,我想不出那种语法。
所以我想看看你是否可以帮我这样重写?
foreach (var f in myData)
{
var res = new FinalClass
{
ID = f.ID,
Floor = f.Floor,
Description = f.Description
};
var setOne = setOneDataList.Where(b => b.FieldID == f.ID).Select(t => new CommonClass
{
FieldName = t.Field,
Color = t.Color,
Status = t.Status
}).OrderBy(b => b.FieldName);
var setTwo = setTwoDataList.Where(f => f.FieldID == f.ID).Select(t => new CommonClass
{
FieldName = t.Field,
Color = t.Color,
Status = t.Status
}).OrderBy(b => b.FieldName);
res.SetOne = setOne;
res.SetTwo = setTwo;
result.Add(fs);
}
最佳答案
我花了很长时间,我看到有人已经粘贴了答案:)
但我会提交我的,因为我建议使用“每行一个 .”方法来编写 LINQ。您不认为这样更具可读性吗?
myData.Select(f => new FinalClass
{
ID = f.ID,
Floor = f.Floor,
Description = f.Description,
SetOne = setOneDataList
.Where(b => b.FieldID == f.ID)
.Select(t => new CommonClass
{
FieldName = t.Field,
Color = t.Color,
Status = t.Status
})
.OrderBy(b => b.FieldName),
SetTwo = setTwoDataList
.Where(f => f.FieldID == f.ID)
.Select(t => new CommonClass
{
FieldName = t.Field,
Color = t.Color,
Status = t.Status
})
.OrderBy(b => b.FieldName),
};
关于c# - 将 foreach 转换为 LINQ 以进行练习和学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77197829/