0

IEnumerable<SelectListItem>C# で項目の値とテキストの組み合わせをトリミングしようとしています。以下のコードでこれを行うことができますが、Linqで達成できるかどうか疑問に思っていましたか?

IEnumerable<SelectListItem> list = //function that fills the IEnumerable<SelectListItem>;

foreach (SelectListItem item in list)
{
    item.Value = item.Value.Trim();
    item.Text = item.Text.Trim();
}
4

2 に答える 2

4

LINQ はクエリを定義するように設計されています。あなたが持っているのはクエリではありません。アイテムを変更/変更しています。そのため、LINQ はそれを達成するための効果的なツールではありません。foreachループは (ループの実装で問題ありません)。LINQ を使用する場合は、既存のアイテムを変更するのではなく、まったく新しいアイテムを作成することになります。それはあなたが本当にやりたかったことかもしれませんし、そうでないかもしれません。もしそうなら、それは次のようになります:

list.Select(item => new SelectListItem()
{
    Value = item.Value.Trim(),
    Text = item.Text.Trim(),
});
于 2013-10-31T20:41:46.593 に答える
1
var result = list.Select(x => new SelectListItem {
  Value = x.Value.Trim(),
  Text = x.Text.Trim()
  });

これでうまくいくと思います。ところで、なぜあなたのはうまくいかなかったのですか?

于 2013-10-31T20:40:31.840 に答える