过滤DataTable并且无法处理空结果

时间:2015-07-04 12:20:32

标签: c# asp.net linq

我使用datatablelinq过滤数据,它工作正常,除非搜索条件不匹配,因此不会因空虚而处理结果表。 以下是我的代码:

var table = dtTokensInfo.AsEnumerable()
                  .Where(r => r.Field<string>("tokenName").Contains(txtTokenName.Text))
                  .CopyToDataTable();

我希望表包含从dtTokensInfor过滤的值,但在搜索条件不匹配时无法处理

1 个答案:

答案 0 :(得分:1)

您应该从Linq表达式

的结果中分离对CopyToDataTable的调用
DataTable table = null;
var temp = dtTokensInfo.AsEnumerable()
              .Where(r => r.Field<string>("tokenName")
              .Contains(txtTokenName.Text));

if(temp != null)
   table = temp.CopyToDataTable();

如果查看MSDN page about CopyToDataTable IEnumerable扩展,您会注意到抛出的可能异常

  

ArgumentNullException:源IEnumerable(Of T)序列是   无法创建任何内容和新表。