c# - 带有 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 条件下工作?
解决方案
您需要在第一个语句中进行转换。同样在显示的代码中,您缺少作业。
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();
推荐阅读
- sql - 如何为具有多个名称的实体设计实体表
- java - 使用 Newton-Raphson 方法计算平方根时的循环条件
- javascript - 如何使用javascript查找内联svg中预先存在的元素的(svg)位置
- flutter - 如何创建每行有 2 个列表项的列表视图
- mysql - Spark结构化流:JDBC接收器中的主键
- .net - 如何通过代码获取当前的 Azure 服务总线命名空间连接字符串
- regex - Atom 编辑器 - 使用正则表达式用标签包装文本
- javascript - 获取文本小于 1024 个字符的 reddit 帖子
- azure - Terraform local-exec Provisioner 在多个 Azure 虚拟机上运行
- python - 如果条件为 False,则重新启动循环并编辑原始列表