如果在执行我的查询后没有元素,我试图返回null值,我使用的是DefaultIfEmpty()方法,但是它并没有阻止抛出该异常:
抛出异常:' System.InvalidOperationException'在 System.Data.DataSetExtensions.dll
附加信息:源包含DataRow引用 是空的。
我的代码:
to_internal_value
如何将null值返回DataTable filtered = dt.AsEnumerable()
.Where(x => x.Field<string>("SLA") == "Valid"
&& x.Field<string>("Status") == "Finished")
.Select(y => y)
.DefaultIfEmpty()
.CopyToDataTable();
数据表?
答案 0 :(得分:0)
DefaultIfEmpty
根据需要返回带有默认值项而非null
的初始化集合:
如果序列为空,则返回指定序列的元素或单例集合中类型参数的默认值。
您可以做的只是检查项目数量:
DataTable filtered = dt.AsEnumerable()
.Where(x => x.Field<string>("SLA") == "Valid"
&& x.Field<string>("Status") == "Finished")
.Select(y => y)
.CopyToDataTable();
if(filtered.Rows.Count == 0)
{
filtered = null;
}
或更好:
var collection = dt.AsEnumerable()
.Where(x => x.Field<string>("SLA") == "Valid"
&& x.Field<string>("Status") == "Finished")
.Select(y => y);
DataTable filtered = collection.Any() ? collection.CopyToDataTable() : null;