首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2013-11-08 
我下面用linq去过滤数据报 转换格式错误DataTable 数据如上图。。我下面用linq去过滤数据报 转换格式错误。。

我下面用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()
                         };

热点排行