【问题标题】:Foreach Loop to linqForeach 循环到 linq
【发布时间】:2013-06-14 16:23:09
【问题描述】:

这可能很简单,但是转换后我看不到数据

public void SearchGrid(int id, ObservableCollection<TestModel> msgField)
{ 
  foreach (var c in msgField)
    DisplayColor = c.Id == id ? Brushes.Blue : Brushes.Black;
}

林克:

Enumerable.FirstOrDefault(msgField.Where(x => x.Id == id), x => { DisplayColor = Brushes.CadetBlue; });

【问题讨论】:

标签: linq foreach


【解决方案1】:

一般来说,创建会产生副作用的查询是个坏主意。我个人会将其重写为:

DisplayColor = msgField.Any(x => x.Id == id) ? Brushes.Blue : Brushes.Black;

这会产生我相信您正在尝试生成的输出。它会根据是否有匹配的“msgField”元素将DisplayColor 设置为蓝色或黑色。

要获得与当前循环代码相同的结果,您可以使用:

if (msgField.Any())
    DisplayColor = msgField.Last().Id == id ? Brushes.Blue : Brushes.Black;

这将产生与您的循环相同的输出,因为您的循环将在每次迭代时覆盖 DisplayColor,因此只有最后一项很重要。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多