【发布时间】:2013-01-15 07:10:03
【问题描述】:
在here 的帖子中,我学习了如何使用 Linq 的延迟执行来构建动态查询。但查询实际上是使用 WHERE 条件的 AND 连接。
如何使用 OR 逻辑实现相同的查询?
由于 Flags 枚举,查询应该搜索 Username、WindowsUsername 或 both:
public User GetUser(IdentifierType type, string identifier)
{
using (var context = contextFactory.Invoke())
{
var query = from u in context.Users select u;
if (type.HasFlag(IdentifierType.Username))
query = query.Where(u => u.Username == identifier);
if (type.HasFlag(IdentifierType.Windows))
query = query.Where(u => u.WindowsUsername == identifier);
return query.FirstOrDefault();
}
}
【问题讨论】:
标签: c# linq entity-framework linq-to-entities where-clause