大家好,感謝您的關注。多個LIST <>類型的C#FOREACH
我不認爲這是可能的,但我想通過多個返回的LIST <>類型執行一個完全相同的FOREACH,而不必剪切和粘貼代碼4次。的dto2,dto3,dto4的所有屬性,並且返回dto5列表是相同的,除了DataValue,這對於每個不同的數據類型(INT,VARCHAR,布爾等)
var dto2 = rd.EngDetailBitsList(dto.EngId);
var dto3 = rd.EngDetailDateTimesList(dto.EngId);
var dto4 = rd.EngDetailVarCharsList(dto.EngId);
var dto5 = rd.EngDetailVarCharMaxesList(dto.EngId);
foreach (var x in dto2)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto3)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto4)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
foreach (var x in dto5)
{
var propertyInfo = dto.GetType().GetProperty(x.ShortDescript,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
if (propertyInfo != null)
{
propertyInfo.SetValue(dto, x.DataValue);
}
}
'dto2'''dto5'的類型是什麼?他們是否使用'ShortDescription'和'DataValue'屬性來實現具有公共基類的通用接口? – MarcinJuraszek 2014-11-25 02:05:47
'ShortDescript'可能會返回不同的值,對吧?所以你可以在'dto'上設置不同的屬性。 – MarcinJuraszek 2014-11-25 02:30:24
@BrianRogers我不明白。對我來說,這是有道理的。即使列表中所有項目的類型相同,「ShortDescript」屬性也可以返回指向「dto」上不同屬性的不同「字符串」值。 – MarcinJuraszek 2014-11-25 02:37:34