LINQtoEntitiesUnionisthrowingerrorParticipationId=t1.Key,CreateDateTime=t1.Max()};varcases=fromcincontext.Casesgroupc.Create_Date_Timebyc.Participation_Idintoc1selectnew{ParticipationId=c1.Key,CreateDateTime=c1.最大限度()};varinteractions=fromiincontext.Interactionsjoinppincontext.Party_Participationoni.Party_Id等于pp.Party_Idgroupi.Last_Update_Date_Time.HasValue?i.Last_Update_Date_Time:i.Create_Date_Timebypp.Participation_Idintoi1selectnew{ParticipationId=i1.Key,CreateDateTime=i1.Max()};transactions.Union(案例);但是当我尝试添加第三个输出时,transactions.Union(interactions);//或者interactions.Union(transactions);我收到以下错误无论哪种方式,它都会抛出以下错误Error1instanceparameter:cannotconvertfrom'System.Collections.Generic.List'to'System.Linq.IQueryable‘错误2'System.Collections.Generic.List'不包含'Union'的定义和最佳扩展方法重载'System.Linq.Queryable.Union(System.Linq.IQueryable,System.Collections.Generic.IEnumerable)'有一些无效参数第三个序列中的唯一区别是我正在使用另一个表连接我已经尝试过.AsEnumerable().ToList()和.ToArray()但它们都没有帮助。当您创建交互时,它的类型不是匿名类型的int和DateTime,它是一个int和一个可为null的DateTime。这是因为在内联if语句中,您永远不会从可为空的列调用.Value。如果您创建这样的交互,您的代码应该可以工作:varinteractions=fromiincontext.Interactionsjoinppincontext.Party_Participationoni.Party_Idequalspp.Party_Idgroupi.Last_Update_Date_Time.HasValue?i.Last_Update_Date_Time.Value:我。Create_Date_Timebypp.Participation_Idintoi1selectnew{ParticipationId=i1.Key,CreateDateTime=i1.Max()};更简单的例子:varlst=newint?[]{2,3,null,5,5};varlst2=newint[]{2,3,4,5,6};lst.Select(x=>x.HasValue?x.Value:0).Union(lst2);//工作正常lst.Select(x=>x.HasValue?x:0).Union(lst2);//抛出错误lst.Select(x=>x??0).Union(lst2);//虽然我们可以很容易地看到内联if语句在任何一种情况下都不会返回null值,但是编译器不能做出这样的保证并且必须在第二种情况下将返回值键入为可为null的int。t1.Key和i1.Key很可能是不同的类型。匿名类型必须具有完全相同的属性名称和类型,以相同的顺序声明,以便您能够合并它们。作为旁注,您可能还想更改这行代码:transactions.Union(cases);为此:varunionedQuery=transactions.Union(cases);否则它不会进行合并,因为您没有存储结果查询。以上就是C#学习教程:LINQtoEntitiesUnion抛出错误分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
