C# LINQ中的重构查询

C# LINQ中的重构查询,c#,linq,C#,Linq,我有一个查询,需要检查对象列表中的值,如果它通过主对象的值循环存在。下面怎么能重新编码 foreach (var kd in dto.KeyDriverModels) { var keyDriverModelNodeValue = result.SingleOrDefault(x => x.KeyDriverModelId == kd.ID); kd.SelectionStatus = keyDriverModelNodeValue != null ?

我有一个查询,需要检查对象列表中的值,如果它通过主对象的值循环存在。下面怎么能重新编码

foreach (var kd in dto.KeyDriverModels)
{
  var keyDriverModelNodeValue = result.SingleOrDefault(x => x.KeyDriverModelId == kd.ID);
  kd.SelectionStatus = keyDriverModelNodeValue != null ? 
                         keyDriverModelNodeValue.SelectionStatus : string.Empty;
}

我尝试对您的代码建模,并将代码重写为Linq。看看这是否有效

static DTO DTO=new DTO();
静态void Main(字符串[]参数)
{
List keyDrivers=新列表();
List result=keyDrivers.Where(x=>x.keydriversormodelid>1000).ToList();
foreach(数据到KeyDriverModels中的变量kd)
{
var keyDriverModelNodeValue=result.SingleOrDefault(x=>x.KeyDriverModelId==kd.ID);
kd.SelectionStatus=keyDriverModelNodeValue!=null?
keyDriverModelNodeValue.SelectionStatus:string.Empty;
}
//新代码
var kd1=结果中的r
在dto.KeyDriverModels中加入d
在r.KeyDriverModelId上等于drs中的d.ID
来自drs中的dr
选择新建{dr}.dr.SelectionStatus!=null?dr.SelectionStatus:string.Empty;
}
}
公共类DTO
{
公共列表KeyDriverModels{get;set;}
}
公共类KeyDriverModel
{
公共int ID{get;set;}
公共字符串选择状态{get;set;}
}
公共类密钥驱动程序
{
public int KeyDriverModelId{get;set;}
公共字符串选择状态{get;set;}
}

重新编码是什么意思?为什么要这样做?这不管用吗?您的代码有什么问题?这不是查询,您正在更改
KeyDriverModel
对象上的值。你不需要更多的LINQ…代码正在运行,我只是想知道除了我编写代码的方式之外是否还有其他方法。@JeffMercado-你认为最好的方法是什么?