无法在EF中合并两个函数结果

时间:2016-07-20 09:34:32

标签: c# entity-framework linq union iqueryable

我尝试联合两个SQL表函数调用的结果集,并且我一直收到此错误  "' Distinct'操作不能应用于指定参数的集合ResultType。参数名称:参数"

到目前为止,我已经尝试了包括"在功能结果表中生成主键","添加[key]属性以产生功能结果的实体框架模型"似乎没什么用。

所以这是我的Linq语法,我将不胜感激任何帮助或建议。

enter image description here

var dataPlan = Context.fn_GetPlans(3, 1, userId);
var dataPlan1 = Context.fn_GetPlans(3, 2, userId);

var ddataPlan = dataPlan.Union(dataPlan1);

2 个答案:

答案 0 :(得分:0)

好的,到目前为止,没有任何答案对我有用,因为我想要一种方法来保持结果的IQueryable,

所以接受这个事实,我回到了我的数据库,并在数据库函数上工作,自己返回多个函数的结果,并在数据库端将它们联合起来。

这对我有用,我希望其他人都有这个问题,在他们的工作中考虑这个解决方案。

答案 1 :(得分:0)

我遇到了同样的错误并通过创建我自己的类来解决它,该类具有与函数结果类型相同的属性,并将查询投影到该类,例如:

var dataPlan = Context.fn_GetPlans(3, 1, userId)
    .Select(p => new MyClass
                 {
                     PropertyA = p.PropertyA,
                     PropertyB = p.PropertyB,
                     // ... etc...
                 });

我无法弄清楚为什么原来的课程不起作用,但新的查询可能是Uninon'ed就好了。