C# 问:如何将DataTable映射到DTO而不使用自动映射器?
我有一个返回数据表的方法:C# 问:如何将DataTable映射到DTO而不使用自动映射器?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个返回数据表的方法: public RetirementDiskSettingDto GetRetirementDiskSettingDetails(Guid retirementDiskSettingGuid) { RetirementDiskSettingDto settingDto = new RetirementDiskSettingDto(); var details = Provider.GetDataTable(
public RetirementDiskSettingDto GetRetirementDiskSettingDetails(Guid retirementDiskSettingGuid)
{
RetirementDiskSettingDto settingDto = new RetirementDiskSettingDto();
var details = Provider.GetDataTable(string.Format("SELECT * FROM {0}RetirementDiskSettingDetails WHERE RetirementDiskSettingGuid = @RetirementDiskSettingGuid ORDER BY [Index]", Provider.DBPrefix), "@RetirementDiskSettingGuid", retirementDiskSettingGuid);
details.Columns.Add("ColumnTitle");
DataTable dynamicReportHybridColumns = new BizClasses.DynamicReportHybridColumn().GetHybridColumns();
DiskSettingColumnType diskSettingColumnType;
foreach (DataRow row in details.Rows)
{
Enum.TryParse(Helper.GetString(row["ColumnType"]), out diskSettingColumnType);
switch (diskSettingColumnType)
{
case DiskSettingColumnType.HybridColumn:
row["ColumnTitle"] = dynamicReportHybridColumns.Select(String.Format("[Guid] = '{0}'", Helper.GetString(row["ColumnName"])))[0]["DisplayTitle"];
break;
default:
row["ColumnTitle"] = Language.GetString(Helper.GetString(row["ColumnName"]), SoftwareManager.Guid);
break;
}
}
return settingDto;
}
另一方面,我有一个DTO:
public class RetirementDiskSettingDto
{
public List<string> SettingTitles { get; set; }
}
公共类失效DiskSettingDTO
{
公共列表设置标题{get;set;}
}
如何将DataTable的特殊列(行[“ColumnName”]
)映射到DTo?
无需使用自动映射器。您可以手动操作,或使用其他库代替自动映射器。你试过什么?@ADyson我试过用手做,但没有成功!您能给我一个正确操作的提示吗?首先,请展示您尝试过的内容,然后我们可以知道您正在努力手动操作的确切位置,我们可以说,让我们定义一个RetirementDiskSettingDto实例,然后
instance.SettingTitles=new List()
。最后,inputColumn.ForEach(x=>{instance.SettingTitles.add(x.ToString())})
。您可以手动完成,也可以使用其他库代替automapper。你试过什么?@ADyson我试过用手做,但没有成功!您能给我一个正确操作的提示吗?首先,请展示您尝试过的内容,然后我们可以知道您正在努力手动操作的确切位置,我们可以说,让我们定义一个RetirementDiskSettingDto实例,然后instance.SettingTitles=new List()
。最后,inputColumn.ForEach(x=>{instance.SettingTitles.add(x.ToString())})
。