我正在運行C#框架2.0,我想從列表中獲取一些數據?該列表是列表<>。我如何做到這一點,沒有循環和手動比較列表中的每個元素<>?如何從沒有Linq的列表中獲取一些對象?
3
A
回答
3
您可以嘗試Predicate。這是我寫的代碼來說明這一點。當然,正如你在這個例子中看到的那樣,你可以將Predicate移出調用類並對其進行控制。如果您需要更多選項,這非常有用。在謂詞中,可以與對象的所有屬性/函數進行許多比較。
static void Main()
{
List<SimpleObject> list = new List<SimpleObject>();
list.Add(new SimpleObject(1,"Jon"));
list.Add(new SimpleObject(2, "Mr Skeet"));
list.Add(new SimpleObject(3,"Miss Skeet"));
Predicate<SimpleObject> yourFilterCriteria = delegate(SimpleObject simpleObject)
{
return simpleObject.Name.Contains("Skeet");
};
list = list.FindAll(yourFilterCriteria);//Get only name that has Skeet : Here is the magic
foreach (SimpleObject o in list)
{
Console.WriteLine(o);
}
Console.Read();
}
public class SimpleObject
{
public int Id;
public string Name;
public SimpleObject(int id, string name)
{
this.Id=id;
this.Name=name;
}
public override string ToString()
{
return string.Format("{0} : {1}",Id, Name);
}
}
8
如果我正確地遵循你的問題,你可以撥打Find()
或FindAll()
方法來獲得數據項淘汰之列。例如:
List<string> myList = ..;
List<string> startingWithA = myList.FindAll(delegate(string s) { return s.StartsWith("A"); });
0
不幸的是,清單數據結構需要反覆查找數據(注意的FindAll以上方法將遍歷被窩裏您的收藏 - 以防萬一你試圖避免不惜一切代價),除非你知道該數據的索引,那麼你可以這樣做:
List<String> list = new List<String>();
list.Add("andrew");
list.Add("nicole");
String value = list[1]; // returns "nicole"
2
沒有LINQ,你的主要選擇是做循環和比較列表中的每個元素。有幾種方法可以幫助你。
List<T>.FindAll()
需要一個Predicate
委託,並將返回所有符合條件的項目。 List<T>.CopyTo()
和List<T>.GetRange()
讓你提取一系列元素。除此之外,你真的不能在LINQ以外的特定選擇方面做很多事情。
1
事實是,即使您最終通過Find或FindAll使用Predicates,它在內部執行的所有操作都是循環遍歷列表,然後運行Predicate來測試匹配。性能明智,你沒有得到任何東西,但它絕對使得整潔的代碼。
0
我認爲上面的大多數答案都只是提供替代方法來完成你想要避免的事情。根據數據結構,無論您選擇哪種實施方式,您/它都必須比較每個項目並挑選出匹配的項目。
根據您的匹配條件,SortedList可以幫助您避免在每個查詢中搜索整個列表。如果您的列表包含您創建的對象,則重寫GetHashCode和Equals將幫助您解決問題。
如果您的匹配標準相當複雜,您可能需要完全不同的數據結構,例如字符串爲trie。
相關問題
- 1. 跟進:如何從沒有Linq的列表中獲得一些對象?
- 2. 如何從LINQ列表中獲取列表中的所有對象
- 3. 使用LINQ從對象列表中獲取一個不同的參數列表
- 4. 沒有從列表中獲取一些項目
- 5. Linq - 組和獲取對象列表
- 6. 如何從對象列表中獲取單個對象
- 7. 從對象列表中獲取一個對象的屬性
- 8. 從python中的對象列表獲取對象屬性列表
- 9. 如何從方法列表中獲取對象列表listBox1_MouseClick C#
- 10. 從linq查詢中獲取對象列表
- 11. 從linq列表查詢中獲取類和對象類型
- 12. 從對象列表中獲取Activerecord關聯對象列表
- 13. 如何從另一個列表中獲取重複對象的列表?
- 14. 使用linq提取另一個列表對象中存在的對象列表
- 15. 從對象列表中獲取價值
- 16. 從子列表中獲取對象
- 17. 從對象列表中獲取屬性
- 18. AspectGetter從列表中獲取對象
- 19. 從對象列表中獲取變量
- 20. 獲取字段從沒有輸入<Ienumerable>對象C#LINQ
- 21. 如何獲取列表中列表中的對象的交集包含這些類的對象?
- 22. 使用LINQ從另一個列表中獲取一個列表
- 23. 有沒有辦法從R中的對象列表中拉取值列表?
- 24. 如何從沒有代理對象的NSArrayController中獲取選定的對象?
- 25. 如何從AWS S3存儲桶獲取唯一對象列表
- 26. 如何獲取Amazon S3中的列表對象的前一頁
- 27. 如何從mongoDB中的對象獲取字段列表?
- 28. 如何從列表中獲取對象的值
- 29. LINQ獲取列表中從列表中唯一項目
- 30. Linq查詢從另一對象的列表更新了一些數據對象列表
使用匿名代理,這不是.NET 1.1 – FlySwat 2008-12-16 21:41:52
他說c#2.0版沒有1.1? – 2008-12-16 21:44:07