这可能非常简单,但我无法在转换后看到数据
public void SearchGrid(int id, ObservableCollection<TestModel> msgField)
{
foreach (var c in msgField)
DisplayColor = c.Id == id ? Brushes.Blue : Brushes.Black;
}
Run Code Online (Sandbox Code Playgroud)
LINQ:
Enumerable.FirstOrDefault(msgField.Where(x => x.Id == id), x => { DisplayColor = Brushes.CadetBlue; });
Run Code Online (Sandbox Code Playgroud)
通常,创建产生副作用的查询是个坏主意.我个人会把它重写为:
DisplayColor = msgField.Any(x => x.Id == id) ? Brushes.Blue : Brushes.Black;
Run Code Online (Sandbox Code Playgroud)
这会产生我相信你试图生成的输出.它将DisplayColor根据是否存在匹配的"msgField"元素将其设置为蓝色或黑色.
要获得与当前循环代码相同的结果,您可以使用:
if (msgField.Any())
DisplayColor = msgField.Last().Id == id ? Brushes.Blue : Brushes.Black;
Run Code Online (Sandbox Code Playgroud)
这将产生与循环相同的输出,因为循环将DisplayColor在每次迭代时覆盖,因此只有最后一项很重要.