簡體   English   中英

基於if語句在linq列表中返回C#返回值

[英]C# return value inside linq list based on if statement

是)我有的

我有一個列表,只有在滿足某些條件時才會執行

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status()
{
   PK = t.PK,
   Area = t.Area,
   Description = t.Description
   //other stuff
}).ToList();

我想要的是

這個列表的工作方式很好,但現在我想略微修改它。 對於其中一個變量,我想運行一個if-else語句,該變量將是if-else語句執行的返回結果

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status()
{
   PK = t.PK,
   Area = t.Area,
   Description,    //<---------------returns the value of executed if-else statement
                                         //if (t.Area.HasValue) Description = a;
                                         //else Description = b;
   OtherStuff = t.OtherStuff
}).ToList();

我的問題是: 我在哪里放置if-else條件才能正確執行它?

我嘗試了什么

我嘗試將if-else語句放在兩個逗號之間的實際變量的位置。

我嘗試使用temp變量,其結果將被返回,但我不希望在我的列表中有這個臨時變量。

在我意識到它是一組實際執行該列表的條件之前,我嘗試在Where()中有額外的條件。

搜索SO和互聯網並沒有讓我想要嘗試的結果(希望,我不只是使用錯誤的搜索條件)。

您可以按照以下方式使用三元運算符:

Area = t.Area,
Description = t.Area.HasValue ? a : b, 
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status()
{
   PK = t.PK,
   Area = t.Area,
   Description = t.Area.HasValue ? a : b, 
   OtherStuff = t.OtherStuff
}).ToList();
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status()
{
   PK = t.PK,
   Area = t.Area,
   Description = t.Area.HasValue ? a : b
   //other stuff
}).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM