我目前有以下代码:
dataSource.Where(row => row.Value == 1)
.Select(row => {row["Text"] = translatedText; return row;})
.Single();
所以我的目标是选择“Value = 1”的DataRow,同时将“Text”列中的值设置为其他值(在我的例子中是一个字符串变量transalatedText)。
这已经适用于上面提到的方法链,但我通常更喜欢LINQ语法。是否有可能将此方法链转换为LINQ?
我的问题是我不知道如何将Select-method中的函数转换为LINQ格式。我不想创建一个新的DataRow,但想要真正编辑所选的DataRow。 (所以我不想使用from x in y where z select new DataRow(...)
但是如果可能的话真的要编辑我的x
谢谢!
答案 0 :(得分:2)
是否有可能将此方法链转换为LINQ?
(通过“to LINQ”我相信你的意思是“查询表达式语法”。)
不直接,不。实际上,您只能将表达式的lambda表达式转换为查询语法。这有一个很好的理由:LINQ的设计不有副作用,而你的“查询”确实有副作用。
我会亲自编写这样的代码:
var row = DataSource.Single(row => row.Value == 1);
row["Text"] = translatedText;
整齐地将查询与副作用区分开来。如果真的,想要使用查询表达式语法,可以写:
var query = (from row in DataSource
where row.Value == 1)
select HorribleMutatingMethod(row)).Single();
...
private DataRow HorribleMutatingMethod(DataRow row)
{
row["Text"] = translatedText;
return row;
}
...但请不要。