C# 是否可以使用LINQ进行列表操作?
这可能是一个愚蠢的问题,但我一直使用linq来选择项目 但是我想知道是否有可能使用它的关键字来完成下面的简单任务C# 是否可以使用LINQ进行列表操作?,c#,linq,list,C#,Linq,List,这可能是一个愚蠢的问题,但我一直使用linq来选择项目 但是我想知道是否有可能使用它的关键字来完成下面的简单任务 List<OrdersInfo> ordersList . . . foreach(OrdersInfo OI in ordersList) if(OI.TYPE == "P") OI.TYPE = "Project"; else OI.TYPE = "Support"; 列出订单列表 . . .
List<OrdersInfo> ordersList
.
.
.
foreach(OrdersInfo OI in ordersList)
if(OI.TYPE == "P")
OI.TYPE = "Project";
else
OI.TYPE = "Support";
列出订单列表
.
.
.
foreach(订单列表中的订单信息OI)
如果(OI.TYPE==“P”)
OI.TYPE=“项目”;
其他的
OI.TYPE=“支持”;
不,是一种查询语言,它在考虑查询定义方面确实很出色,但在这方面并不总是很好(速度和/或内存方面)
如果您想修改集合,请按照您已经完成的方式进行操作。LINQ用于查询集合,对于修改,您当前的循环更具可读性和更好的方法,但如果您想要LINQ选项,则: 如果
OrderInfo
是一个类(引用类型),那么您可以修改对象的属性(您不能将它们指定为null或新引用)
这是截图
有趣的是,我没有将结果分配回
ordersList
您可以使用List类的每个方法
ordersList.ForEach(oi => oi.TYPE = oi.TYPE == "P" ? "Project" : "Support" );
如果希望在IEnumerable类型中具有ForEach方法,则可以创建自己的ForEach扩展
public static void ForEach<T>(this IEnumerable<T> en, Action<T> action)
{
foreach(T item in en)
{
action(item);
}
}
publicstaticvoidforeach(此IEnumerable en,Action)
{
foreach(英语中的T项)
{
行动(项目);
}
}
不是Linq解决方案,但它看起来是:
ordersList.ForEach(OI => OI.TYPE = OI.TYPE == "P" ? "Project" : "Support");
仅在
列表
实例上可用,而在IEnumerable
上不可用LINQ意味着无突变。如果您想操纵,请使用foreach
。Tigran,我同意您的大部分答案,但您可以使用LINQ修改列表。(虽然不应该)抱歉,我没有看到您的答案我们同时发布,我们是来帮助您的,不是来竞争:)我不理解重复的OI.TYPEYes它是对的=)如果@AngelicCore希望有一个IEnumerable类型的ForEach方法,他/她可以创建自己的ForEach扩展method@AngelicCore看看这个答案,它被称为三元运算符:不确定是否存在语法错误,可能错误在于向某人展示了如何使用LINQ?@sixlettervariables来实现这一点,语法上是正确的,我实际上在VS中对它进行了测试。我同意不应该通过LINQ来实现,我在回答的开头也提到了这一点,但是如果有可能的话被否决了。。。隐马尔可夫模型。这对我来说是新的:)人们总是对那些“有效”但有XSS/SQL注入问题的代码投反对票,等等。
public static void ForEach<T>(this IEnumerable<T> en, Action<T> action)
{
foreach(T item in en)
{
action(item);
}
}
ordersList.ForEach(OI => OI.TYPE = OI.TYPE == "P" ? "Project" : "Support");