我有3个课程,DOb,Patient和LookUp
public class Dog
{ public int Id { get; set; }
public DateTime DOB { get; set; }
public string FirstName { get; set; }
public string Display { get; set; }
public int qqQMS { get; set; }
public string Description { get; set; }
}
public class Patient
{
public int Id { get; set; }
public Guid Patid { get; set; }
public string FirstName { get; set; }
public string Display { get; set; }
public string Description { get; set; }
}
public class LookUp : ILookUp
public int Id { get; set; }
public string Display { get; set; }
public string Description { get; set; }
}
我试图轻松地将列表或列表转换为我之前问过的问题的列表,但从来没有想过,如果不使用Dynamic,我宁愿没有Dynamics的情况也更顺畅
我尝试过
List<LookUp> Look = doggy.Cast<LookUp>().ToList();
List<LookUp> patLook = pat.Cast<LookUp>().ToList();
也尝试过此操作,但我对此不满意
public static IList<LookUp> ToLookUp<T>( IEnumerable<T> source)
{
List<LookUp> list = (from prop in source
select new LookUp
{
Display = prop.Display ?? "",
Description = prop.Description ?? "",
Id = prop.Id
}).ToList();
return list;
}
扩展方法可以工作
答案 0 :(得分:0)
您将需要在 classes 上实现 interface ,此时不需要具体的Lookup
class < / p>
public class Dog : ILookUp { ... }
public class Patient : ILookUp { ... }
这样,您可以投射到界面并使用它
var listOfDogs = new List<dog>();
var LookupList = listOfDogs.Cast<ILookup>();
我很乐意,但是Dob ad Patient是在其他地方创建的,而我却无法 修改它们
那么,没有比这更简单的方法了,您真的不能在没有反思的情况下做出通用的解决方案,您必须在执行过程中 project 到Lookup
或进行表达式每种类型