c# - 如何使用 LINQ 连接多个选择?
问题描述
我有如下所示的主要选择:
protected IQueryable<Answers> GetActualAnswers<TAns>(DateTime? start, DateTime? end, long? statusId) where TAns: AnswersBase
{
_contex.Set<TAns>.Where(x => x.Type == VoteType.Good)
.Select(vv => new Answers
{
CreatedAt = vv.CreatedAt,
StatusId = vv.StatusId,
Type = vv.Type ,
AnswerInGuideStatusId = vv.AnswerInGuideStatusId
}
}
我在两个简单的查询中使用此方法:
var result1 = GetActualAnswers<JournalAnswers>(start, end, statusId)
.Select(j => new UnitedAnswers
{
Question = j.Question,
}
var result2 = GetActualAnswers<BoAnswers>(start, end, statusId)
.Select(b => new UnitedAnswers
{
Prospects = b.Prospects ,
}
var mainResult = result1.Concat(result2);
我收到错误:
Sql = Sql = '((System.Data.Entity.Infrastructure.DbQuery<UnitedAnswers>)result1).Sql' threw an exception of type 'System.NotSupportedException'
Sql = Sql = '((System.Data.Entity.Infrastructure.DbQuery<UnitedAnswers>)result2).Sql' threw an exception of type 'System.NotSupportedException'
Sql = Sql = '((System.Data.Entity.Infrastructure.DbQuery<UnitedAnswers>)mainResult).Sql' threw an exception of type 'System.NotSupportedException'
是否可以使用多个选择?可能有人可以对此查询提供建议吗?
解决方案
首先,我想知道你在哪里得到了属性j.Question
,b.Prospects
而在方法中GetActualAnswers
你没有得到上面 2 个属性的值。
其次,在GetActualAnswers
你返回的方法上IQueryable
,所以你应该检查empty
而不是null
值
那么你的情况可能看起来像这样
var mainResult = Enumerable.Concat(
resut1 ?? Enumerable.Empty<UnitedAnswers>(),
resut2 ?? Enumerable.Empty<UnitedAnswers>()
或者
var mainResult = Enumerable.Concat(
result1.AsEnumerable(),
result2.AsEnumerable());
以下链接对您有用。
推荐阅读
- pycharm - 更新使用 Flatpak 运行的 PyCharm
- excel - 到今天和其他日期的日期比较
- java - 如何在 RestTemplate (Spring) 中最后执行 ClientHttpRequestInterceptor
- r - 闪亮:主面板中的多个条件面板不起作用
- xcode - 用于 Cordova、Xcode 10 和模拟器的 Visual Studio 工具
- algorithm - 检查两个 3d 网格是否在有效时间内相等
- python - 在没有函数调用的情况下如何启动函数?
- android - 数据绑定到 MutableList 中复杂类型的对象
- api - 使用python脚本从机器人框架api中删除report.html输出的红色/绿色的任何方法
- css - 停止在 Big Cartel 网站上滚动标题图片