如tb_flag 数据结构如下:
flag int null
不能使用:flag==null
生成的SQL语句为 where flag=null
建议使用:可空类型 用Nullable<T>.Equals(字段,值)
var query=from f in db.tb_flag
where Nullable<int>.Equals(f.flag,null) select f;
生成的SQL语句为 where flag is null
#region 取无估计产品编码
//var noPriceRows = this.dtDTL.AsEnumerable()
// //.Where(p => p.Field<int>("erpclsid").Equals(1) && Object.Equals(p.Field<decimal>("gujia_price"), null))
// .Where(p => p.Field<int>("erpclsid").Equals(1) && p.Field<decimal>("gujia_price") == (decimal?)null )
// .Select(p => new
// {
// top_pdno = p.Field<string>("top_pdno")
// }).DistinctBy(p => new { p.top_pdno });
//var query = noPriceRows.ToList().Distinct();
var noPriceRows = from p in this.dtDTL.AsEnumerable()
where p.Field<int>("erpclsid").Equals(1) && Nullable<decimal>.Equals(p.Field<decimal?>("gujia_price"), null)
select (new
{
top_pdno = p.Field<string>("top_pdno")
});
var query = noPriceRows.ToList().DistinctBy(p => new { p.top_pdno });
if (query.ToList().Count>0)
{
foreach (var row in noPriceRows.ToList())
{
UIMessageTip.ShowOk(row.top_pdno);
}
}
参考 Datatable Linq化AsEnumerable()+C#中DBNull.Value和Null的用法和区别+return default(T)
https://www.cnblogs.com/zkbfighting/p/13535924.html