linq和DataSet中的问题

sinat_15262463 2015-04-23 11:38:37
过程是使用linq筛选出DataSet中的特定的数据。



var query = from info in ds.Tables[0].AsEnumerable() where info.Field<string>("告警类别") == "寿命预警" select info;

DataTable dt = query.CopyToDataTable<DataRow>();



现在遇到一个问题,如果筛选的ds中没有符合筛选条件的数据,就会报错。这里改怎么判断呢??
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
嫣如舜华 2015-04-23
  • 打赏
  • 举报
回复
var query = from info in ds.Tables[0].AsEnumerable() where info.Field<string>("告警类别") == "寿命预警" select info; if(query != null){ DataTable dt = query.CopyToDataTable<DataRow>(); }
sinat_15262463 2015-04-23
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
Any一样会导致一次查询
  • 打赏
  • 举报
回复
使用Count()会导致两次查询,可以自己再封装一下 var query = from info in ds.Tables[0].AsEnumerable() where info.Field<string>("告警类别") == "寿命预警" select info; var rows = query.ToList(); var dt = rows.Count == 0 ? null : rows.CopyToDataTable<DataRow>();
zujinsheng 2015-04-23
  • 打赏
  • 举报
回复
 if(query.Any()){
          DataTable dt = query.CopyToDataTable<DataRow>();
 }
嫣如舜华 2015-04-23
  • 打赏
  • 举报
回复
那就判断个数

  if(query.Count() > 0){
       DataTable dt = query.CopyToDataTable<DataRow>();
  }
sinat_15262463 2015-04-23
  • 打赏
  • 举报
回复
引用 2 楼 xinguotiantian 的回复:
var query = from info in ds.Tables[0].AsEnumerable() where info.Field<string>("告警类别") == "寿命预警" select info; if(query != null){ DataTable dt = query.CopyToDataTable<DataRow>(); }
query永远都不为null

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧