LINQ即使满足条件也返回null

时间:2018-11-09 01:50:19

标签: c# asp.net linq

不确定为什么会发生,我在调试模式下观察到它,并且LINQ内的条件得到满足

if (chkSometing.Checked)
{
  var _results = from itemlist in dtResult.AsEnumerable()
                 where itemlist.Field<string>("data_visibility").Contains("both")
                 select itemlist;
  try { dtResult = _results.CopyToDataTable(); }
  catch (Exception ex) { Response.Write(ex.Message); }
}

1 个答案:

答案 0 :(得分:2)

尽管您可能已经解决了该问题,但我可以解释为什么“包含”无效,而“任何”在这种情况下都能正常工作。

包含检查序列是否包含元素。

Any检查序列中的任何元素是否满足条件。它像一个谓词。

因此,如果您要检查序列的元素是否满足条件,请使用“任何”。下面的示例:

List<string> list = new List<string> { "a", "aa", "aaa", "b", "c" };

bool containsBoy = list.Contains("c"); //true
// list.ElementAt(0).Contains("c") // --> Error which is what you are getting

bool anyBoy = list.Any(r => r.Length == 2); // true for "aa"

来源: What is the difference between Contains and Any in LINQ?