在这个帖子中,我学习了如何使用Linq的延迟执行来构建一个动态查询。但是该查询实际上使用的是WHERE条件的AND连接方式。
我该如何使用OR逻辑获得相同的查询结果?
由于Flags枚举值,查询应该检索Username,WindowsUsername或两者都有:
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();
}
}
LINQKit
库 - 或者按照第二个链接选择另一个选项。然而,我继续搜索并安装了Microsoft.Linq.Dynamic
NuGet 包,它满足了我的需求。(来自 Microsoft 的免费软件通常不需要额外的手续)。 - Zarepheth