0

これは非常に単純かもしれませんが、変換後にデータを見ることができません

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; });
4

1 に答える 1

5

一般に、副作用を引き起こすクエリを作成することはお勧めできません。私は個人的にこれを次のように書き直します:

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

これにより、生成しようとしていると思われる出力が生成されます。DisplayColor一致する「msgField」要素があるかどうかに基づいて、 を青または黒に設定します。

現在のループ コードと同じ結果を得るには、次を使用できます。

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

DisplayColorこれにより、ループは反復ごとに上書きされるため、ループと同じ出力が生成されるため、最後の項目のみが重要になります。

于 2013-06-14T16:26:31.763 に答える