0

我正在尝试用 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";
            }
        }

谢谢你的帮助。

4

3 回答 3

4

问题是ToList(). 结果在您之后使用的变量中不可见。

尝试以下方法:

var list = Query<Client>(sql).ToList();
list.ForEach(l => l.DateOfBirth = l.DateOfBirth.Replace("01/01/1700", "n/a"));

应该可以正常工作。之后使用该list变量。

于 2012-07-18T17:04:47.730 回答
1
        var result = Query<Client>(sql).ToList();
        result.ForEach(l => l.DateOfBirth = l.DateOfBirth.Replace("01/01/1700", "n/a"));
于 2012-07-18T17:11:33.410 回答
0

您的代码假定对 a 中的对象所做的更改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();
于 2012-07-18T17:15:50.010 回答