我對從名爲Person的對象列表擴展而來的Class(PersonCollection)使用linq操作。擴展列表類中的linq操作
public class PersonCollection: List<Person>
{
//various functions
}
public class Person
{
public string name{ get; set; }
public string address { get; set; }
}
本來我是用字符串列表名單來存儲這個類是由和LINQ操作將工作
List<List<String>> oldList = GetList();
oldList = (List<List<string>>)oldList .OrderBy(s =>s[index_of_name]).ToList();
這會工作,但我顯然想擺脫數據使用究竟是什麼概念證明基本上是簡單的代碼
應用於這些新類的同一類型的LINQ操作不起作用:
people = (PersonCollection)orderedData.OrderBy(s => s.name]).ToList();
這是錯誤我得到:
Unable to cast object of type 'System.Collections.Generic.List`1[Person]' to type 'PersonCollection'.
如果我投列出它的工作原理,就是用現在
people = (List<Person>)people .OrderBy(s => s.name]).ToList();
我想用我的PersonCollection類從擴展什麼IM一個人名單,我的方法在哪裏出錯?無論是編碼還是數據分類的一般選擇
只是好奇,爲什麼你必須直接從列表繼承? –
2013-04-08 11:38:59
或者爲什麼你需要一個集合(因此) - 當從'IEnumerable <>'抽取'到集合時 - 通常是這樣 - 你只是用它來枚舉。如果你發佈更多的代碼,我們可以幫助更多 – NSGaga 2013-04-08 12:44:09
@CongLong這個想法是靈活性:它是一個類的人在列表中執行操作,所以我想我會擴大名單,這樣我可以添加一些功能,這個類,並在需要時將linq操作應用到別處的類對象。此刻,考慮到我不得不投入人員名單,無論如何,我可能只是稍微拆散課堂,並將其設置爲靜態或將人員職能作爲靜態函數放置 –
fullface
2013-04-09 08:16:58