C# 3.0 在对象集合中查找数据,其中值对于对象中的所有名称都是公用的

C# 3.0 在对象集合中查找数据,其中值对于对象中的所有名称都是公用的,c#-3.0,C# 3.0,我有一个包含名称、位置和值的对象集合。我有一个需要比较数据的位置列表。我需要做的只是拉取具有列表中所有位置通用的名称和值的记录 因此,如果其中一个位置的对象中没有项目,我将忽略所有这些项目。我只想要那些在我的位置列表中都通用的项目 我该如何写一个linq声明来解决这个问题?甚至一个lambda声明也可以。我真的不想多次遍历所有记录来查找公共记录。如果我正确地假设您有一个对象,该对象的名称、位置和值为属性,并且希望从具有相同位置的集合中获取这些属性 假设你有以下对象 public class My

我有一个包含名称、位置和值的对象集合。我有一个需要比较数据的位置列表。我需要做的只是拉取具有列表中所有位置通用的名称和值的记录

因此,如果其中一个位置的对象中没有项目,我将忽略所有这些项目。我只想要那些在我的位置列表中都通用的项目


我该如何写一个linq声明来解决这个问题?甚至一个lambda声明也可以。我真的不想多次遍历所有记录来查找公共记录。

如果我正确地假设您有一个对象,该对象的名称、位置和值为属性,并且希望从具有相同位置的集合中获取这些属性

假设你有以下对象

public class MyObject
{
    public string name{set;get;}
    public string location{set;get;}
    public string value{set;get}
}
你有一个像IEnumerable MyObject这样的对象的集合

您可以搜索此集合以获取具有相同位置的对象:

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

这将获取其位置在位置列表中的所有对象:

dataObjects.Where(o => locations.Any(l => l == o.Location));
如果您需要更复杂的比较,您应该发布相关类的结构,这样我们可以给您提供更准确的答案。

您应该在这个问题中添加linq标记。此外,在c3.5中添加了LINQ,因此您应该用C替换c3.0标记。不要吹毛求疵,而是供将来参考;
dataObjects.Where(o => locations.Any(l => l == o.Location));