C# 4.0 C#LINQ to objects查询根据列表更改字段值
我有以下目标C# 4.0 C#LINQ to objects查询根据列表更改字段值,c#-4.0,linq-to-objects,C# 4.0,Linq To Objects,我有以下目标 objItem (id,name,qty) - list<items> objSel(selId) - list<int> 对象(id、名称、数量)-列表 objSel(selId)-列表 objSel.selId是objItem的选定项id 如何编写LINQ查询,以便在未选择项目时将项目数量更改为0并返回objItem。您的伪代码非常混乱,但我怀疑您需要类似以下内容: List<Item> items = ...; List
objItem (id,name,qty) - list<items>
objSel(selId) - list<int>
对象(id、名称、数量)-列表
objSel(selId)-列表
objSel.selId是objItem的选定项id
如何编写LINQ查询,以便在未选择项目时将项目数量更改为0并返回objItem。您的伪代码非常混乱,但我怀疑您需要类似以下内容:
List<Item> items = ...;
List<int> selectedIds = ...;
foreach (var item in items.Where(x => !selectedIds.Contains(x.Id)))
{
item.Quantity = 0; // Property name adjusted for readability and convention
}
列表项=。。。;
列表SelectedDS=。。。;
foreach(items.Where(x=>!selectedds.Contains(x.Id))中的变量项)
{
item.Quantity=0;//根据可读性和约定调整了属性名称
}
为提高效率,请对所选ID使用HashSet
请注意,执行更改的不是LINQ查询-查询只提供需要更改的项。虽然您可以滥用LINQ来更改数据,但这样做是个坏主意。线索就在“查询”这个词里——它是关于提问的。你如何处理这个问题的答案是另一回事。我已经写了一个答案,但如果不是你想要的,请进一步澄清这个问题。理想情况下,显示真实代码而不是伪代码。Jon,我认为我们可以使用LINQ来过滤和更改字段值。如果这是最好的方法,我会选择这个。谢谢。Jon,我想我们可以使用LINQ来过滤和更改字段值。如果这是最好的方法,我会选择这个。谢谢。@Wilz:你可以,但这不是它的设计目的——基本上,你必须和LINQ战斗才能做到这一点。现在,如果您要重新设计,以便不更改现有对象,而是基于现有对象和某些条件创建新对象,那将是另一回事。