【问题标题】:Merging two Query Results合并两个查询结果
【发布时间】:2013-07-02 15:43:11
【问题描述】:

我在同一张表上有以下两个查询,需要合并它。

 var Prod = this.UnitOfWork.myRepository.GetData();
 var PreProd = this.UnitOfWork.myRepository.GetData();

 var Merge = Prod.Union(PreProd);

但是当我检查合并的结果时,它不显示联合,而是显示以下消息

消息:此方法支持 LINQ to Query Result Union not 工作实体基础设施,不打算使用 直接从您的代码中

如何实现。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 linq entity-framework entity-framework-mapping


【解决方案1】:

您可以先使用 .AsEnumerable() 将 IQueryable 转换为 IEnumerable。

 var Prod = this.UnitOfWork.myRepository.GetData().AsEnumerable();
 var PreProd = this.UnitOfWork.myRepository.GetData().AsEnumerable();

 var Merge = Prod.Union(PreProd);

【讨论】:

  • Unionsupported by EF 即 IQueryable
  • 这行得通。不知道为什么我们需要先将其转换为 IEnumerable
  • 我认为不需要将两者都转换为 IEnumerable ,请参阅我的答案。
  • 支持Union IQueryable和IEnumerable,不支持IQueryable和IQueryable
【解决方案2】:

支持 LINQ to EF Union:

IQueryable<TSource> Union<TSource>(
this IQueryable<TSource> source1,
IEnumerable<TSource> source2
)

那就试试吧:

 var Prod = this.UnitOfWork.myRepository.GetData();
 var PreProd = this.UnitOfWork.myRepository.GetData();

 var Merge = Prod.Union(PreProd.AsEnumerable());

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2022-06-16
    • 2016-10-27
    • 2013-07-25
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多