我正在使用Linq to Entity,Linq查询返回 ToList ()并在 DataSourcesModel 类中存储多行。后来我使用foreach来迭代项目并在 DataSourcesModelDTO 中存储值,直到这里工作正常。
现在问题是 DataSourcesModelDTO dto 只存储一个行值。 我期待它应该存储多行值。如何在 扩展程序 方法中实现此目的?
** var datasoruceModeltDTO = DataSourcesDTOTransformers.ToDTO(result);
**
public static class DataSourcesDTOTransformers
{
public static DataSourcesModelDTO ToDTO(this List<DataSourcesModel> model)
{
if (model == null) { return null; }
var dto = new DataSourcesModelDTO();
ToDTO(model, dto);
return dto;
}
public static void ToDTO(List<DataSourcesModel> model1, DataSourcesModelDTO dto)
{
foreach (var model in model1)
{
dto.DataSourceConfigID = model.DataSourceConfigID.ToString();
dto.DataSourceID = model.DataSourceID.ToString();
dto.Name = model.Name;
dto.server = model.server;
dto.LastModified = model.LastModified;
dto.Instance = model.Instance;
}
}
}
[DataContract]
public class DataSourcesModelDTO
{
[DataMember]
public string DataSourceID { get; set; }
[DataMember]
public string DataSourceConfigID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string server { get; set; }
[DataMember]
public string Instance { get; set; }
[DataMember]
public bool Deleted { get; set; }
[DataMember]
public DateTime LastModified { get; set; }
[DataMember]
public DateTime LastSync { get; set; }
}
答案 0 :(得分:1)
foreach (var model in model1)
{
dto.DataSourceConfigID = model.DataSourceConfigID.ToString();
每次在循环中设置相同dto
对象的属性。我会将您的toDTO
方法重新排列为:
DataSourcesModel
对象并返回一个DataSourcesModelDTO
对象(从循环或Linq查询中调用该方法),或IEnumerable<DataSourcesModel>
并返回IEnumerable<DataSourcesModelDTO>
如何在扩展方法中实现这一点?
不确定为什么需要扩展方法,但相应的签名是:
public static IEnumerable<DataSourcesModelDTO> ToDTOCollection (this IEnumerable<DataSourcesModel> model)
我会让你弄清楚实现的内容。提示:您可以在方法中创建List<DataSourcesModelDTO>
,并使用与现在相同的方式使用新对象填充它。