无法将类型’List ‘隐式转换为’IEnumerable ‘

试图左转加入2个表

public IEnumerable GetApplicant() { IEnumerable applicantdata = Cache.Get("applicants") as IEnumerable; if (applicantdata == null) { var applicantList = (from a in context.Profiles join app in context.APPLICANTs on a.PROFILE_ID equals app.Profile_id into joined from j in joined.DefaultIfEmpty() select new { Profiles = a, APPLICANTs= j, }).Take(1000); applicantdata = applicantList.AsQueryable().OrderBy(v => v.APPLICANT_ID).ToList(); if (applicantdata.Any()) { Cache.Set("applicants", applicantdata, 30); } } return applicantdata; } 

但问题是我在最后一行有错误

 applicantdata = applicantList.AsQueryable().OrderBy(v => v.APPLICANT_ID).ToList(); 

错误说

错误1无法将类型’ System.Collections.Generic.List ‘隐式转换为’ System.Collections.Generic.IEnumerable ‘。 存在显式转换(您是否错过了演员表)

这是我的申请人类

 [DataContract(IsReference = true)] public partial class APPLICANT { [DataMember] public int APPLICANT_ID { get; set; } [DataMember] public string APPLICANT_LastName { get; set; } [DataMember] public string APPLICANT_FirstName { get; set; } [DataMember] public string APPLICANT_MiddleName { get; set; } [DataMember] public string APPLICANT_Address { get; set; } [DataMember] public string APPLICANT_City { get; set; } [DataMember] public string APPLICANT_Phone { get; set; } [DataMember] public string APPLICANT_Email { get; set; } [DataMember] public Nullable Profile_id { get; set; } 

这是问题的集合类型。

  IEnumerable applicantdata ... 

不等于从此表达式中获得的类型:

  var applicantList = (from a in context.Profiles join app in context.APPLICANTs on a.PROFILE_ID equals app.Profile_id into joined from j in joined.DefaultIfEmpty() select new //<-- this is what dicides the type of the applicationList { Profiles = a, APPLICANTs= j, }).Take(1000); 

这意味着你不能这样做:

  applicantdata = applicantList... 

我想你需要做这样的事情:

 applicantdata = applicantList .SelectMany(c => c.APPLICANTs) //this line added .AsQueryable().OrderBy(v => v.APPLICANT_ID).ToList(); 

UPDATE

如果你在SelectMany中使用我的“解决方案”,你应该问自己 - “我在创建applicationList时是否提取了正确的数据..?”

也许这更好..:

 var applicantList = (from a in context.Profiles join app in context.APPLICANTs on a.PROFILE_ID equals app.Profile_id into joined from j in joined.DefaultIfEmpty() select j //<-- this is APPLICANTs type }).Take(1000); 

我认为您的问题不是从列表转换为IEnumerable。 相反,问题是你不能将annonoymous对象的LIST转换为IEnumerable的APPLICANT。

您应该修改select语句,以便选择APPLICANT。