gpt4 book ai didi

c# - 在匿名类型中包含基于条件的属性

转载 作者:太空狗 更新时间:2023-10-30 00:14:26 24 4
gpt4 key购买 nike

假设我有以下匿名类型

var g = records.Select(r => new
{
Id = r.CardholderNo,
TimeIn = r.ArriveTime,
TimeOut = r.LeaveTime,
});

是否可以做类似下面的事情:

var g = records.Select(r => new
{
Id = r.CardholderNo,
if (condition)
{
TimeIn = r.ArriveTime;
},
TimeOut = r.LeaveTime,
//many more properties that I'd like to be dependant on conditions.
});

如何根据条件实现匿名类型?

最佳答案

您可以使用 ternary operator: ?: 来做到这一点

语法是这样的:

TimeIn = condition ? r.ArriveTime : (DateTime?)null // Or DateTime.Min or whatever value you want to use as default

更新

在考虑了您的问题几分钟后,我想到了以下您永远不应该使用的代码;)

using System;

class Program
{
static void Main(string[] args)
{
DateTime dt = DateTime.Now;

bool condition = true;

dynamic result = condition ?
(object)new
{
id = 1,
prop = dt
}
:
(object)new
{
id = 2,
};

Console.WriteLine(result.id);
if (condition) Console.WriteLine(result.prop);
}
}

这段代码不应该在生产中使用,因为它的可读性很差而且很容易出错。但是,作为该语言可能实现的学习示例,它非常好。

关于c# - 在匿名类型中包含基于条件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com