linq中左连接查询,报错“值不能为空,参数名:row”该如何解决
var queryByService = from GStocks in dtGoodsStocks.AsEnumerable()
join SalesCount in dtt.AsEnumerable()
on GStocks.Field<String>("GoodsNo")
equals SalesCount.Field<String>("GoodsNo") into mm
from SalesCount in mm.AsEnumerable().DefaultIfEmpty()
where (GStocks.Field<int>("StocksAll") >= 1) || (SalesCount.Field<int>("Out") > 0) select new
{
商品编号 = GStocks.Field<string>("GoodsNo"),//.Split('-')[2],
总库存 = GStocks.Field<int>("StocksAll"),
可销售数量 = GStocks.Field<int>("available"),
出库数量 = SalesCount.Field<int>("Out")==Convert.ToInt32(DBNull.Value) ? 0 : SalesCount.Field<int>("Out") };
以上是我的语句dtGoodsStocks、SalesCount 是两个数据源,其中SalesCount 中数据为空,在查询的时候(SalesCount.Field<int>("Out") > 0)以及出库数量 = SalesCount.Field<int>("Out")==Convert.ToInt32(DBNull.Value) ? 0 : SalesCount.Field<int>("Out")这两个位置都报错值不能为空,我该如何修改呢?
雪地跪求大侠相助
------解决方案--------------------你可以搜关键词 C# linq left join null
给你个例子,
C# code
var query = (from keyword in context.Keywords
join ignore in context.IgnoreWords
on keyword.WordID equals ignore.ID into ignored
from i in ignored.DefaultIfEmpty()
where i == null
where keyword.DomainID == ID
orderby keyword.Score descending
select keyword).Take(10);
------解决方案--------------------
where (GStocks.Field<int>("StocksAll") >= 1) || (SalesCount.Field<int>("Out") > 0) select new
===========
where (GStocks.Field<int>("StocksAll") >= 1) || (SalesCount!=null && SalesCount.Field<int>("Out") > 0) select new
出库数量 = SalesCount.Field<int>("Out")==Convert.ToInt32(DBNull.Value) ? 0 : SalesCount.Field<int>("Out") };
==========
出库数量 = SalesCount==null ? 0 : SalesCount.Field<int>("Out") };