如何在 linq to sql 查询的 select 中使匿名类型 属性 可为空

How to make an anonymous type property nullable in the select of a linq to sql query

考虑这个简化的示例查询:

dt = (
  from O in ...
  ...
   select new
   {
      O.A,
      B = 0
   }).ToList().ToDataTable()

其中 .ToDataTable() 来自 Convert generic List/Enumerable to DataTable?

假设 table O 没有名为 B 的属性,但我想要一个名为 B 的列,稍后我将填写其值。当 B 收到发送给它的数字值时,这工作正常但我实际上想发送它 int? 值,目前如果它发送 null.

它会崩溃

有没有办法 select 新列(例如 B),使其成为可为 null 的类型?

由于推断了匿名类型成员的类型,因此推断出正确的事情:B = (int?)null.

不确定 "fill in later" 是什么意思。如果你想让 B 可变,你需要创建一个 class.

尝试:

select new
{
    O.A,
    B = (int?)0
}

你可以这样做,

var testNull = (from student in studentList
                select new
                {
                    RollNo = default(int?),
                    Name = student.Name
                }).ToList();

但更好的是,我们可以创建具体类型,而不是依赖于基于值的匿名类型。:-)