在ASP.NET 3.5 / Silverlight中,我遇到需要从服务器向客户端发送四个小列表的情况。每个子列表都是一个对象列表。我想通过客户的一个电话来做到这一点。
所以,例如:
ListA是POHeader对象的列表 ListB是POLine对象的列表 ListC是供应商对象的列表 ListD是项目对象列表
ListX将是一个包含四个列表中每个列表的列表。
这些对象中的每一个都具有不同的结构。当列表返回到客户端时,我将把它拆开并将四个子列表中的每一个绑定到相关控件。
这在C#中是否可行。我已经看过列表列表的示例,但每个子列表都是相同的类型。
非常感谢 迈克托马斯
答案 0 :(得分:4)
由于您总是有4个列表,只需创建一个自定义类来保存它们,然后将其传回:
class POCollection
{
IList<POHeader> Headers { get; private set; }
IList<POLine> Lines { get; private set; }
// etc...
}
答案 1 :(得分:0)
您可以将它们作为对象列表发回,然后使用OfType查询运算符重新构建客户端上的列表:
List<object> allItems;
var headers allItems.OfType<POHeader>().ToList();
var lines = allItems.OfType<POLine>().ToList();
...
虽然我会将每个列表作为成员制作一个DTO,这对任何来电者都有帮助。
答案 2 :(得分:0)
您还可以将它们保存在单独的列表中,这些列表会转换回对象...然后在目的地重新制作它们。
List<POHeader> ListA;
List<POLine> ListB;
List<Vendor> ListC;
List<Project> ListD;
...
List<List<object>> message = new List<List<object>>(){
ListA.Cast<object>().ToList(),
ListB.Cast<object>().ToList(),
ListC.Cast<object>().ToList(),
ListD.Cast<object>().ToList()
};
然后再回到检索......
List<POHeader> ListA = message[0].Cast<POHeader>().ToList();
...