如何在 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();
但更好的是,我们可以创建具体类型,而不是依赖于基于值的匿名类型。:-)
考虑这个简化的示例查询:
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();
但更好的是,我们可以创建具体类型,而不是依赖于基于值的匿名类型。:-)