我有一个字符串列表
List<string> list = new List<string>();
list.Add("john");
list.Add("David");
list.Add("Sam");
现在我想检查数据库中的列是否包含这些列表项。
var v = db.employee.where(s => s.Content.Contains(list));
我的问题是如何在不使用任何循环的情况下,只在一个查询中将所有列表项匹配到数据库列。如果单个列表项与列匹配,则查询必须返回结果。我上面提到的查询不起作用。请帮我解决这个问题。
答案 0 :(得分:1)
这只会假设您的Restangular
是实体框架db
且DbContext
是s.Content
。如果您正在使用其他ORM,那么它可能无效。
string
答案 1 :(得分:0)
你可以这样做:
.ToList()
您可以尝试省略var query = db.employee.AsQueryable();
query = list.Aggregate(query,
(query, name) => query.Where(empl => empl.Content.Contains(name)));
行,但我担心您的ORM不会知道如何将查询转换为SQL。
如果希望在SQL中执行整个查询,则应考虑以这种方式构建查询:
{{1}}
答案 2 :(得分:0)
怎么样:
List<string> list = new List<string> {"john", "Warwick", "Sam"};
var vresult = _db.employee.Where(x => list.Contains(x.Content)).ToList();
请说明你的期望......?比如它怎么不起作用?
答案 3 :(得分:0)
如果return不同于null,则存在。
public List<Employee> CheckIfExists(List<string> nameList)
{
if (nameList == null)
{
return null;
}
string inClause = "";
foreach (var item in nameList)
{
inClause = string.Format("{0},{1}", inClause, item);
}
return db.employee.SqlQuery("SELECT * FROM employee WHERE employee.Name IN (@p0)", inClause).ToList();
}
答案 4 :(得分:0)
列表的每个元素都将作为参数传递给 s.Content.Contains 这是一份员工记录。
var v = db.employee.Where(s => list.Any(s.Content.Contains));
答案 5 :(得分:0)
这可能会帮助您, 名称为{{“ john”,“ David”,“ Sam”}的列表 您要检查员工表中是否存在John / David / Sam。 以下查询用于检查员工中是否存在特定名称
var _data = _db.employee.Where(emp => list.Any(li => li.name == emp.name)).ToList();
答案 6 :(得分:0)
LINQ查询语法:
var result = from o in db.employee
where list.Contains(o.Content)
select o;