首页 > 解决方案 > 带有 if 语句的 LINQ to SQL

问题描述

我有一个 :

            var query = db.vw_web_GetAccounts; //a sql view
            if (some condition)
            {
                query.Where(...);
            }
            else
            {
                query.Where(...);
            }
            query.Select(a =>  new AccountVM
            {
                Name = a.Name,
                ....
            });

            return query.ToList();

我想回来List<AccountVM>

有一个编译错误:

Error   CS0029  Cannot implicitly convert type 'System.Data.Entity.DbSet<vw_web_GetAccounts>' to 'System.Collections.Generic.List<AccountVM>'

没有 if 条件示例:它按预期工作

var query = db.vw_web_GetAccounts
            .Where(...)
            .Select(a => new AccountVM
            {
                Name = a.Name,
                ....
            });

            return query.ToList();

我如何使它在 if 条件下工作?

标签: c#linq

解决方案


您需要在第一个语句中进行转换。同样在显示的代码中,您缺少作业。

var query = db.vw_web_GetAccounts as IQueryable<vw_web_GetAccounts>;
if (some condition)
{
    query = query.Where(...);
}
else
{
    query = query.Where(...);
}

return query.Select(a =>  new AccountVM
{
    Name = a.Name,
    ....
}).ToList();

推荐阅读