【发布时间】:2012-10-11 19:38:43
【问题描述】:
我正在尝试使用 LINQ (C#) 在一系列 SQL LIKE 语句上模拟 SQL IN 语句。
我从一个名为 Query 的 IQueryable<user> 对象开始,该对象尚未被“过滤”。
我刚刚开始在 Stack Overflow 上发帖,所以请耐心等待我 :)...
ObjectQuery<user> Context = this.Context.users;
IQueryable<user> Query = (IQueryable<user>)Context;
// create a BLANK clone of the FULL list (Query)
var QueryFinal = Query.Where(i => i.ID == 0);
foreach (String Item in userFilter.Name.Contains)
{
// based on the FULL list (Query) return all records that apply to this item & then append results to the final list
QueryFinal = QueryFinal.Concat(Query.Where(i => i.Name.Contains(Item)));
}
return QueryFinal.ToList();
我认为在每次迭代中,Query.Where 语句中返回的结果集将被附加到 QueryFinal 列表中,但由于某种原因,在每次后续迭代中,它似乎都会覆盖之前的所有应该在最终列表中“保存以供安全保存”的记录。我也尝试过使用 .Union 但仍然不是我希望的结果。它似乎返回的只是最后一个结果集,而不是所有附加的结果集。有人发现我做错了吗?
【问题讨论】: