猿问

Linq中用于实体的动态WHERE子句(OR)

Linq中用于实体的动态WHERE子句(OR)

在岗位上这里我学习了如何使用Linq的延迟执行来构建动态查询。但是,查询实际上使用的是地点条件的串联。

如果使用OR逻辑,如何实现相同的查询?

由于使用了Flagesenum,查询应该搜索用户名Windows用户名双管齐下:

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();
    }}


holdtom
浏览 1002回答 3
3回答

慕哥9229398

这应该会有帮助.。包含多列查询表的设计似乎也有一个根本的问题(如果我错了,请纠正我)。数据库中标识类型的用途是什么?

慕运维8079593

我得用LINQKit使用此解决方案的库-或者按照第二个链接到另一个选项。但是,我继续搜索并安装了Microsoft.Linq.DynamicNuget包裹,满足了我的需要。(微软的免费赠品通常是允许的,不需要额外的繁文缛节)。
随时随地看视频慕课网APP
我要回答