c# - 使用可能为空的列表通过 EF6 进行查询

标签 c# mysql asp.net-mvc entity-framework entity-framework-6

我有一个函数需要 3 个 string[],然后使用 EF6 查询我的数据库以尝试找到匹配项。这些列表可以没有任何变量,也可以包含一个或多个变量。

using (var db= new Db(ConnectionString))
{
    var results =
                await
                    db.dbases.Where(
                                w =>
                                    portfolioSelected.Any(a => a == w.portfolio) &&
                                    statusSelected.Any(a => a == w.statusname) &&
                                    deskSelected.Any(a => a == w.assignedto)
                                ).ToListAsync();
}

尝试此查询时,我得到零结果。

我该如何编写这个列表,以便 3 个列表可以具有任何组合(包括为空),并且获得我想要的结果?

最佳答案

根据 Jeroen Heiers 的评论,我能够通过检查 string[] 是否为空并分部分创建查询来分解查询。

        using (var db = new Db(ConnectionString))
        {
            IQueryable<dbase> query = cmax.dbases.Where(w => w != null);
            var results = new List<dbase>();

                    if (portfolioSelected != null)
                        query = query.Where(w => portfolioSelected.Any(a => a == w.portfolio));
                    if (statusSelected != null)
                        query = query.Where(w => statusSelected.Any(a => a == w.statusname));
                    if (deskSelected != null)
                        query = query.Where(w => deskSelected.Any(a => a == w.assignedto)); break;


            results = await query.ToListAsync();
        }

关于c# - 使用可能为空的列表通过 EF6 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843818/

相关文章:

c# - 在 Xamarin.Forms 上加载图像时内存不足

c# - 需要签名 DLL Microsoft.WindowsAPICodePack.Shell

mysql - ExpressJS - 发送变量作为 POST 请求的响应

c# - 无论用户文化如何,将货币格式化为始终使用美元

html - 将 CSS 样式属性应用于 @Html.TextBox

c# - Linq Groupby、Union 和 Sum 聚合多个集合中的数据

mysql - golang -> gorm : How I can use sql. NullInt64 在 mysql 中是 int(10)?

php - 插入语句不起作用。不转移到其他表

c# - 查看帖子中的 PartialView 并返回响应 json

c# - 页面加载时在 WebBrowser 中显示滚动条