我想写一个Linq查询,它提取所有用户的名字或姓氏以字符串列表中的至少一个字符串开头。这用于在消息传递系统中自动完成收件人。Linq to SQL:通过||进行聚合
这是我第一次尝试天真:
var users = UserRepository.ALL()
foreach (var part in new [] { 'Ha', 'Ho', 'He' })
{
string part1 = part; // "Copy" since we're coding lazily
users = users.Where(x => x.LastName.StartsWith(part1) ||
x.FirstName.StartsWith(part1));
}
这不工作,虽然,作为结果变成:
users.Where(a || b).Where(c || d).Where(e || f)...
...而我想:
users.Where(a || b || c || d || e || f || ...)
我会如何去做这件事?
我不是在数据库的性能非常熟悉,当谈到这样的情况下,但我真的很喜欢它,如果我没有必须为N个字符串执行N个查询。 – 2010-10-04 15:34:52