好的,我一定要做点蠢事,但这不行吗?我有以下三个列表:
var commonViews = (from v in context.TPM_VIEWS where v.VIEWID < 0 select v); // IQueryable<TPM_VIEWS> var ownedViews = (from v in context.TPM_VIEWS where v.OWNERID == userId && v.VIEWID > 0 select v); // IQueryable<TPM_VIEWS> var sharedViews = (from v in context.TPM_USER.Include("TPM_VIEWS2") where v.USERID == userId select v).First().TPM_VIEWS2; // EntityCollection<TPM_VIEWS>
每个列表都具有正确的值和计数.我可以返回这些列表中的任何一个:
return commonViews.ToList();
我可以返回这两个列表中的任何一个:
return commonViews.Concat(ownedViews).ToList();
但是,当我尝试返回所有三个:
return commonViews.Concat(ownedViews).Concat(sharedViews).ToList();
我得到例外:
Unable to create a constant value of type ‘Entity.TPM_VIEWS’. Only
primitive types or enumeration types are supported in this context.
我究竟做错了什么?所有这三个值都是无可否认的.大多数情况下,我提出这个问题,因为这是最好的方法,以确保我在发布后30秒内会注意到问题.
更新:
我93%肯定问题在这里:
var sharedViews = (from v in context.TPM_USER.Include("TPM_VIEWS2") where v.USERID == userId select v).First().TPM_VIEWS2;
这看起来像一个可列举的TPM_VIEWS对象列表,我可以调用ToList()并获取正确的数据,但是与其他列表不兼容.
更新2:
这实际上是有效的.指向谁可以告诉我为什么!
commonViews.ToList().Concat(ownedViews.ToList()).Concat(sharedViews.ToList()).ToList();