Ann*_*hri 2 c# linq asp.net-mvc
我有这些:
public class FamilyHead
{
public Guid HeadId { get; set; }
public string Name { get; set; }
}
public class Citizen
{
public Guid Id { get; set; }
public string Name { get; set; }
public short Age { get; set; }
// more properties
[ForeignKey("FamilyHead")]
public Guid HeadId { get; set; }
public virtual FamilyHead FamilyHead { get; set; }
}
public class CitizenDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
public short Age { get; set; }
public Guid HeadId
public string HeadName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果它是单个实例,我可以通过扩展方法手动映射它:
public static CitizenDTO ToDTO(this Citizen citizen)
{
if (citizen == null) return null;
return new CitizenDTO {
Id = citizen.Id,
Name = citizen.Name,
HeadId = citizen.HeadId,
HeadName = citizen.FamilyHead.Name
}
}
var dto = aCitizen.ToDTO();
Run Code Online (Sandbox Code Playgroud)
但如何绘制公民列表呢?我认为Select()可能可以完成这项工作,但我只知道如果模型和 dto 具有相同的结构,该怎么做。就像这个例子:
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Select(i => i.ToString());
Run Code Online (Sandbox Code Playgroud)
那么如何映射一个列表呢?
Select()您可以像在问题中使用的那样使用 Linq string,无需编写长扩展方法
IEnumerable<CitizenDTO> dto = citizens.Select(x => x.ToDTO());
Run Code Online (Sandbox Code Playgroud)