我是LINQ的新手.
我想查询描述列字符串的所有行(示例值"我今天感觉很幸运.")包含/匹配a中的任何项目List<string> lst.
列表项的示例包含{"lucky","bad","ok"}.
我想通过只使用linq实现,但我混淆了以下方法正确吗?
谢谢.
选项1:
var item =
from a in datatbl.AsEnumerable()
from b in lst
where a.Field<string>("description").contains(b)
select a;
选项2:
var item =
from a in datatbl.AsEnumerable()
where lst.Any(x=> a.Field<string>("description").Contains(x))
select a;
您的两个选项都应该有效(更改包含到Contains).但是如果你想要不区分大小写,你需要使用ToUpper或其他东西.
例如,此代码提供"测试夹具"并处理不区分大小写.
DataTable datatbl = new DataTable();
datatbl.Columns.Add(new DataColumn("description",typeof(string)));
// add simple test rows
datatbl.Rows.Add("I'm feeling lucky today.");
datatbl.Rows.Add("I'm feeling bad today.");
datatbl.Rows.Add("I'm feeling good today.");
// more test rows here...
List<string> lst = new List<string>(new string[] { "Lucky", "bad", "ok" });
var item =
from a in datatbl.AsEnumerable()
from b in lst
where a.Field<string>("description").ToUpper().Contains(b.ToUpper())
select a;
var item2 =
from a in datatbl.AsEnumerable()
where lst.Any(x => a.Field<string>("description").ToUpper().Contains(x.ToUpper()))
select a;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18261 次 |
| 最近记录: |