读书人

小弟我下面用linq去过滤数据报 转换格

发布时间: 2013-11-08 17:52:14 作者: rapoo

我下面用linq去过滤数据报 转换格式错误
小弟我下面用linq去过滤数据报 转换格式异常

DataTable 数据如上图。。我下面用linq去过滤数据报 转换格式错误。。请教大家。。


List<int> callTypes = new List<int> { 2, 3 };
var query = from data in ds.Tables[0].AsEnumerable()
where callTypes.Contains(data.Field<int>("CallType"))
group data by new { t1 = data.Field<int>("Ent_ID"), t2 = data.Field<string>("SDate") } into m
select new
{

Ent_ID = m.Key.t1,
SDate = m.Key.t2,
CallAll = m.Select(x => x.Field<string>("CallCode")).Distinct().Count()
};
foreach (var item in query) //这里就报错了。。。
{
WriteSysLog(item.Ent_ID + "..." + item.SDate + "..." + item.CallAll);
}

var query_Trs_Suc = from data in ds.Tables[0].AsEnumerable()
let ToLen = data.Field<int>("TotalLen")
where data.Field<int>("CallType") == 2 && data.Field<string>("Called").Length > 5
&& ToLen>0
group data by new { t1 = data.Field<int>("Ent_ID"), t2 = data.Field<string>("SDate") } into m
select new
{

Ent_ID = m.Key.t1,
SDate = m.Key.t2,
CallIn_TRS_Suc = m.Select(x => x.Field<string>("CallCode")).Distinct().Count()
};
foreach (var item_trs_suc in query_Trs_Suc)
{
WriteSysLog(item_trs_suc.Ent_ID + "..." + item_trs_suc.SDate + "..." + item_trs_suc.CallIn_TRS_Suc);
}


[解决办法]
var query = from data in ds.Tables[0].AsEnumerable()
where callTypes.Contains(data.Field<int>("CallType"))
group data by new { t1 = data.Field<int?>("Ent_ID"), t2 = data.Field<string>("SDate") } into m
select new
{

Ent_ID = m.Key.t1.HasValue?m.Key.t1.Value:0,
SDate = m.Key.t2,
CallAll = m.Select(x => x.Field<string>("CallCode")).Distinct().Count()
};

读书人网 >.NET

热点推荐