我有一个OrdersInfo列表 我将OrdersInfo继承到YearlyResourceReport并添加12个属性 - 月(公共字符串Jan {get; set;})等
现在我创建一个新类的列表(所以[OldProperties] + [12Month])
如何将两个列表合并在一起?
class YearlyResourceReport : OrdersInfo
{
public string Jan { get; set; }
public string Feb { get; set; }
public string Mar { get; set; }
public string Apr { get; set; }
public string Jun { get; set; }
public string Jul { get; set; }
public string Aug { get; set; }
public string Sep { get; set; }
public string Oct { get; set; }
public string Nov { get; set; }
public string Dec { get; set; }
}
增加:
List<OrdersInfo> ordersList =
WorkOrderEntity.GetYearlyOrders(year, loggedInUser, customerIds, sortBy).ToList();
List<YearlyResourceReport> newList;
我希望将属性添加到第一个列表(根本不需要创建第二个列表) 或者只是作为最后一个措施合并两个列表。
答案 0 :(得分:4)
这可以作为一个例子让你走上正确的道路:
class A
{
public string PropertyA { get; set; }
public override string ToString() { return this.PropertyA; }
}
class B : A
{
public string PropertyB { get; set; }
public override string ToString() { return string.Format("{0} - {1}", this.PropertyA, this.PropertyB); }
}
var aList = new List<A>();
var bList = new List<B>();
for (int i = 0; i < 10; i++)
{
aList.Add(new A() { PropertyA = string.Format("A - {0}", i) });
bList.Add(new B() { PropertyA = string.Format("B::A - {0}", i), PropertyB = string.Format("B::B - {0}", i) });
}
// now list the current state of the two lists
for (int i = 0; i < 10; i++)
{
Console.WriteLine(aList[i]);
Console.WriteLine(bList[i]);
}
Console.WriteLine();
Console.WriteLine();
// now merge the lists and print that result
var newList = bList.Concat(aList.Select(a => new B() { PropertyA = a.PropertyA, PropertyB = "Created by system." }));
foreach (var item in newList)
{
Console.WriteLine(item);
}
在上面的示例中,我有一个类A
,B
和B
继承自A
并添加了一个属性。然后我构建了两者的列表并将它们写出Console
。完成后我们合并两个列表,从B
创建A
,因为单个通用列表必须具有相同的类型。你可以想象使用类似ArrayList
而不是通用列表的东西,并且容纳两种不同的类型 - 但我认为这不是你想要的。
一旦合并了类型,我们也会将合并的结果写到Console
,您会看到两个列表已合并。
如果您的要求略有不同,这将超过90%,因为老实说,您的问题并未包含太多信息,所以您让我们有点假设某些的东西。
注意:我使用scriptcs
编译,运行并证明了这个示例,这就是为什么它没有结构化。
答案 1 :(得分:1)
如果我确实理解你的问题,你可以这样做。
// Your class definitions
public class YearlyResourceReport
{
public YearlyResourceReport()
{
this.MonthlyResourceReports = new List<MonthlyOrderInfo>();
}
public List<MonthlyOrderInfo> MonthlyResourceReports { get; set; }
}
public class MonthlyOrderInfo
{
public string Month { get; set; }
public int MonthNumber { get; set; }
public OrdersInfo OrdersInfo { get; set; }
}
public class OrdersInfo
{
public int Id { get; set; }
public string description { get; set; }
public int TotalOrders { get; set; }
public double TotalRevenue { get; set; }
}
您可以按如下方式创建包含YearlyResourceReport类:
public YearlyResourceReport GetYearlyOrders()
{
YearlyResourceReport yrr = new YearlyResourceReport();
for(int i = 1; i <= 12; i++)
{
yrr.MonthlyResourceReports.Add(new MonthlyOrderInfo {
moi.MonthNumber = i,
moi.OrdersInfo = WorkOrderEntity.GetMonthlyOrders(year, i, loggedInUser, customerIds, sortBy).ToList()
});
}
return result;
}