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 回答