根据linq查询内的三元条件分配对象属性

时间:2019-04-05 15:01:52

标签: c# linq

在下面的代码中,我将从API检索的数据分配给名为groupedGamesListing的变量。

使用该变量,我正在选择数据并创建一个名为GroupedGames的新对象。

我可以使用它,但是现在我试图引入一个名为GameControllerId的新属性。

我需要将GameControllerId设为两个数字之一,具体取决于一年。

我开始编写代码,但是我不知道如何在lambda表达式中表示if / then或Ternary运算符。

这就是我正在使用的东西。

var groupedGamesListing = apiResults.Select(games => new GroupedGames
{
   // ...
   GameId = games.Select(g => g.CurrentGameId).FirstOrDefault().ToString(),
   GameControllerId = games.Select(g => { (g.GameYear == 2018) ? 34729 : 99483  }),
   // ...
}).ToList();

因此,如果g.GameYear是2018,那么我需要GameControllerId为34729。如果不是,则为99483。

在上面的表达式中这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定您的确切用例,但您可以考虑

var groupedGamesListing = apiResults.SelectMany(g => new GroupedGames
    {
        // ...
        GameId = g.CurrentGameId.ToString(),
        GameControllerId = (g.GameYear == 2018) ? 34729 : 99483,
        // ...
    }).ToList();

看起来apiResults是列表列表,您可能会遇到问题,因此这会使原始对象变平。