我有两个清单..
第一个包含具有映射值的行,包括列名,xcord,ycord
第二个包含我需要映射的数据..
我需要使用第一行中的列名获取每行中的值..
例如
List<SheetMappings> smaps = new List<SheetMappings>();
foreach(maplist m in mlist)
{
SheetMappings newMap = new SheetMappings();
foreach(vallist v in vlist)
{
newMap.Value = v.{m.ColumnName};
newMap.xCord = m.xCord;
newMap.yCord = m.yCord;
}
smaps.Add(newMap);
}
任何赞助
干杯
格雷厄姆
编辑:
List<SpreadMappings> spreadMapping = new List<SpreadMappings>();
foreach (var m in mappings)
{
foreach (var v in hvalues)
{
SpreadMappings map = new SpreadMappings();
switch (m.ColumnName)
{
case “DocHeading”:
map.ColumnX = m.ColumnX;
map.ColumnY = m.ColumnY;
map.ColumnValue = v.DocHeading;
map.ColumnName = m.ColumnName;
map.ColumnId = v.Id;
map.ColumnSheetName = sheetName; spreadMapping.Add(map);
break;
答案 0 :(得分:0)
我认为“newMap.Value = v。{m.ColumnName}”部分会是这样的:
newMap.Value = v.FirstOrDefault( vitem => vitem.ColumnName == m.ColumnName );
这将为您提供“v”中的第一个项目,该项目具有与“m”的“ColumnName”属性匹配的“ColumnName”属性。这假设“vallist”的内容是具有“ColumnName”属性的对象。
答案 1 :(得分:0)
如果我理解你要做什么,你需要使用反射来获取由m.ColumnName表示的属性的值:
var smaps = new List<SheetMappings>();
foreach(maplist m in mlist)
{
var pi = typeof(vallist).GetProperty(m.ColumnName);
var newMap = new SheetMappings();
foreach(vallist v in vlist)
{
newMap.Value = pi.GetValue(v, null);
newMap.xCord = m.xCord;
newMap.yCord = m.yCord;
}
smaps.Add(newMap);
}
因此,使用反射来获取m.ColumnName
所代表的属性的PropertyInfo的引用,然后调用PropertyInfo.GetValue
以从v获取该属性的值。