我有一個實體框架查詢,它根據特定條件從數據庫中檢索結果。但是,有一個實例,我想根據 where 子句中的條件過濾結果。我認為案例陳述是我如何實現這一目標,有人能指出我正確的方向嗎?因此,對于從 OutageList 返回的結果,對于中斷類型為“Live”的情況,如果 NumberOfPeopleAffected 大于 4,我只希望將其包含在結果中。例如: outageList.Where(o => o.FaultType == "Live" && o.NumberOfPeopleAffected > 4)問題是,上面的代碼是不夠的,因為我也想返回其他中斷,只是對于Live中斷的情況,如果受影響的人數超過4,我只想返回它們。這有意義嗎?這是我需要的案例陳述嗎?如果是這樣,在 LINQ 中編寫它的最佳方法是什么?
3 回答

蝴蝶不菲
TA貢獻1810條經驗 獲得超4個贊
您可以在Where()
子句中包含 OR 條件:
outageList.Where(o => (o.FaultType == "Live" && o.NumberOfPeopleAffected > 4) || o.FaultType != "Live");

忽然笑
TA貢獻1806條經驗 獲得超5個贊
使用這個查詢:
outageList.Where(o => (o.FaultType == "Live" && o.NumberOfPeopleAffected > 4) || o.FaultType != "Live")

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
要在 linq 中執行您想要的操作,請在下面使用。
var faultList = new[] {"Live", "SomethingElse"};
outageList.Where(o => faultList.Contains(o.FaultType) && o.NumberOfPeopleAffected > (o.FaultType == "Live" ? 4 : 0));
老實說,我可以使用此聲明,但我意識到它可能難以閱讀。
- 3 回答
- 0 關注
- 185 瀏覽
添加回答
舉報
0/150
提交
取消