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

Listあなたのコードは、aのオブジェクトに加えられた変更が、そのオブジェクトの元に反映されることを前提としてQuery<Client>います。どうやらこれはそうではありません。試すことができることの1つは、その時点からリストを呼び出しForEach()て使用する前に、リストを割り当てることです。

var clients = Query<Client>(sql).ToList();
clients.ForEach(x => x.DateOfBirth = x.DateOfBirth.Replace("01/01/1700", ""));

また、ForEachLINQ演算子ではありません。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 に答える