我正在运行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