相关疑难解决方法(0)

Linq to Entities中的动态where子句(OR)

这里的帖子中,我学习了如何使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities entity-framework where-clause

18
推荐指数
1
解决办法
1万
查看次数