无法将类型’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。