2010-06-30 127 views
0

我有一个包含名称,位置和值的对象集合。我有一个需要比较数据的位置列表。我需要做的只是提取名称和值与我列表中所有位置相同的记录。查找对象集合中的数据,其中对象中的所有名称都具有相同的值

因此,如果我的对象中没有任何项目位置,我忽略所有这些项目。我只想要那些与我的位置列表相同的项目。

我该如何编写一个linq语句来解决这个问题?甚至可以使用lambda表达式。我真的不想循环遍历所有记录多次查找常见记录。

+0

您应该将'linq'标签添加到此问题中。在C#3.5中还添加了LINQ,因此您应该用'c#'替换'c#3.0'标签。不要挑剔,但为了将来的参考;) – 2010-06-30 21:08:39

回答

0

如果我假设你有一个对象具有名称,位置和值作为属性,并且你想从具有相同位置的集合中获取对象。

假设你有下面的对象

public class MyObject 
{ 
    public string name{set;get;} 
    public string location{set;get;} 
    public string value{set;get} 
} 

,你有这些对象的像IEnumerable<MyObject> myObjects;

集,就可以通过这个集合搜索,以获得与相同位置的对象:

IEnumerable<MyObject> results = myObjects.Where(mo => mo.location.Contains("targetLocation")); 

或者您可以说:

var results = from o in myObjects 
       where o.location.Contains("something") 
       select c; 
0

这得到所有的位置是在位置列表中的对象:

dataObjects.Where(o => locations.Any(l => l == o.Location)); 

如果您需要更复杂的比较,你应该张贴有关类的结构,所以我们可以给你一个更准确的答案。

相关问题