需要做搜索
本文关键字:搜索 | 更新日期: 2023-09-27 18:33:43
我有以下查询:
DataTable dtble = dt.AsEnumerable()
.Any(row => row.Field<String>("Course") == "Math")
.CopyToDataTable();
我希望过滤包含"Math"
Course
记录。 我尝试使用.Any()
但没有用。
澄清一下,如果课程有 12XMath123,我仍然应该返回一条记录,因为它包含"数学"。Usig where 原因将只返回
尝试使用 Where()
而不是 Any()
。这对我有用:
DataTable dtble = dt.AsEnumerable()
.Where(row => row.Field<String>("Course") == "Math")
.CopyToDataTable();
根据评论,您可以尝试StartsWith()
或EndsWith()
或Contains()
。前任:
DataTable dtble = dt.AsEnumerable()
.Where(row => row.Field<String>("Course").Contains("Math"))
.CopyToDataTable();
在此处查看基本的 Linq 示例。但是您正在寻找 Where,它返回一组与给定谓词匹配的值。Any 返回一个布尔值,指示是否有任何元素与给定谓词匹配。
var dtble = dt.AsEnumerable()
.Where(row => row.Field<string>("Course") == "Math")
.CopyToDataTable();
您希望使用
Where 而不是 Any,并且在将字符串与 Linq 进行比较时,更适合使用 .等于方法。您还应该修剪()空格并使用.较低或 .鞋面以获得一致的外壳。
DataTable dtble = dt.AsEnumerable()
.Where(row => row.Field<string>("Course")
.Trim().Lower().Equals("math")
.CopyToDataTable();