我正在尝试用LINQ中的空字符串替换字符串日期值“01/01/1700”。
日期的类型为字符串。
这样的东西,但我无法让它发挥作用。
Query<Client>(sql).ToList().ForEach(x => x.DateOfBirth =
x.DateOfBirth.Replace("01/01/1700", ""));
此代码有效,但不是LINQ。
var result = Query<Client>(sql).ToList();
foreach (var client in result)
{
if (client.DateOfBirth == "01/01/1700")
{
client.DateOfBirth = "n/a";
}
}
感谢您的帮助。
答案 0 :(得分:3)
问题是ToList()
。结果在您之后使用的变量中不可见。
尝试以下内容:
var list = Query<Client>(sql).ToList();
list.ForEach(l => l.DateOfBirth = l.DateOfBirth.Replace("01/01/1700", "n/a"));
应该可以正常工作。之后使用list
变量。
答案 1 :(得分:1)
var result = Query<Client>(sql).ToList();
result.ForEach(l => l.DateOfBirth = l.DateOfBirth.Replace("01/01/1700", "n/a"));
答案 2 :(得分:0)
您的代码假定对List
中的对象所做的更改将反映在该对象来自的Query<Client>
中。显然事实并非如此。您可以尝试的一件事是在调用ForEach()
之前分配列表并使用该点上的列表:
var clients = Query<Client>(sql).ToList();
clients.ForEach(x => x.DateOfBirth = x.DateOfBirth.Replace("01/01/1700", ""));
此外,ForEach
不是LINQ运算符。它是List
类中的一种方法。与LINQ运算符不同,它将修改调用它的列表,并且不会返回任何内容。使用LINQ“修改”数据的方法是使用select
:
var clients = (from client in Query<Client>(sql).ToList()
select new Client(client)
{
DateOfBirth = client.DateOfBirth.Replace("01/01/1700", "")
}).ToList();