[英]How to use an if condition in LINQ with C#
Where
子句必須返回一個bool
,所以你所缺少的只是實際的比較:
fr.Where(x => x.Starttime == "02:55")
但是現在我們還需要決定 select 是什么。 可能有很多、一個或沒有退回的物品。 如果我們只想要第一個匹配,我們可以使用FirstOrDefault
,它將返回第一條記錄,或者null
如果沒有返回。 我們還可以通過將 FirstOrDefault 的結果與FirstOrDefault
進行null
(使用??
運算符),將 select 設置為默認值,例如"[no match found]"
如果沒有返回記錄:
var comment = fr
.Where(item => item.Starttime == "02:55")
.FirstOrDefault()
?.Comment ?? "[no match]";
如果我們想要 select 多條評論,那么我們可以使用Select
方法指定我們想要的屬性 select 和ToList()
將它們都返回到一個List<string>
中:
var allComments = fr
.Where(item => item.Starttime == "02:55")
.Select(item => item.Comment)
.ToList();
更新
現在您已經發布了代碼的屏幕截圖(此處不建議這樣做 - 最好將相關代碼粘貼到問題中的代碼部分),看來您正在設置基於匿名類型的實例的屬性IGrouping
中項目的屬性。
由於您有StartTime = fr.Min(x => x.StartTime)
,並且顯然Comment
與StartTime
有某種關系,您可能想做這樣的事情:
// Get the Comment from the item with the smallest (Min) StartTime
Comment = fr.OrderBy(x => x.StartTime).FirstOrDefault()?.Comment ?? "[no comment]",
嘗試
var comments = fr.Where(x => x.Starttime == val).Select(x=> x.Comment);
如果您只想要第一場比賽,請嘗試
var comment = fr.Where(x => x.Starttime == val).FirstOrDefault()?.Comment;
或更簡潔地說
var comment = fr.FirstOrDefault(x => x.Starttime == val)?.Comment;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.