C# 使用lambda进行字典数组值搜索

C# 使用lambda进行字典数组值搜索,c#,linq,dictionary,lambda,linq-expressions,C#,Linq,Dictionary,Lambda,Linq Expressions,如何使用lambda表达式搜索作为对象的dictionaries值。(使用下面的类) 这不起作用->houseDict[0]。选择many(s=>s.GetHouseNumber())。其中(c=>c.GetCustomer()==theCustomer) 如果特定客户的房屋可以分布在多个ID上,则您需要搜索所有价值集合: houseDict.SelectMany(kvp => kvp.Value) .Where(s => s.GetCustomer() == th

如何使用lambda表达式搜索作为对象的dictionaries值。(使用下面的类)

这不起作用->
houseDict[0]。选择many(s=>s.GetHouseNumber())。其中(c=>c.GetCustomer()==theCustomer)


如果特定客户的房屋可以分布在多个ID上,则您需要搜索所有价值集合:

houseDict.SelectMany(kvp => kvp.Value)
         .Where(s => s.GetCustomer() == theCustomer)
这假定
customer
实例是多值集合中的同一实例。如果您需要基于ID进行匹配,则可以使用:

houseDict.SelectMany(kvp => kvp.Value)
         .Where(s => s.GetCustomer().GetId() == theCustomer.GetId())

如果特定客户的房屋可以分布在多个ID上,则您需要搜索所有价值集合:

houseDict.SelectMany(kvp => kvp.Value)
         .Where(s => s.GetCustomer() == theCustomer)
这假定
customer
实例是多值集合中的同一实例。如果您需要基于ID进行匹配,则可以使用:

houseDict.SelectMany(kvp => kvp.Value)
         .Where(s => s.GetCustomer().GetId() == theCustomer.GetId())

听起来你想搜索字典,而不仅仅是字典中的第一项。只要你有一个
使用System.Linq语句,您应该能够执行以下操作:

houseDict.ToList().Where(s => s.Value.GetCustomer() == theCustomer);

这会将您的词典更改为列表>,您可以使用lambda来进行搜索。

听起来您想搜索词典,而不仅仅是词典中的第一项。只要你有一个
使用System.Linq语句,您应该能够执行以下操作:

houseDict.ToList().Where(s => s.Value.GetCustomer() == theCustomer);


这将把你的字典变成一个列表>,你可以使用lambda。字典的
int
键是什么?为什么要使用key=0进行搜索?你能提供更多的上下文吗?@Michael我已经编辑了我的post@YacoubMassadint键是街道,例如,街道1、街道2。使用KEY(0)只是提供一个例子,说明我试图实现与您的问题不直接相关的其他观察:1)考虑使用仅获得属性而不是<代码> GETZZE()/<代码>方法,2。如果在值而不是键中进行大量搜索,那么字典可能不是最好的结构。字典的
int
键是什么?为什么要使用key=0进行搜索?你能提供更多的上下文吗?@Michael我已经编辑了我的post@YacoubMassadint键是街道,例如,街道1、街道2。使用KEY(0)只是提供一个例子,说明我试图实现与您的问题不直接相关的其他观察:1)考虑使用仅获得属性而不是<代码> GETZZE()/<代码>方法,2。如果在值而不是键中进行大量搜索,那么字典可能不是最好的结构。谢谢,但是单个ID呢?一个人可以拥有多个房子的地方?e、 g.他们在第一个密钥/id houseDict[0]中有3个房屋,如果他们都有相同的客户,则任一查询都可能返回多个房屋。区别在于这些房屋是否包含相同的客户实例,或者是否包含具有相同ID的不同实例。对不起,我在上一次评论中应该更清楚。因此,在houseDict[0]中,假设3个House数组元素的客户是John。那么,您将如何使用lambda检索它。如果不搜索整个字典,即不搜索houseDict[1],houseDict[2]@S.Bane,上述任何查询都可以解决您的问题,对于您的数据结构(字典),除了迭代所有条目之外,没有其他方法。@S.Bane这将是
houseDict[0]。其中(S=>S.GetCustomer()==客户)
您在问题中陈述的内容。我不知道你说的“不知道如何缩小门牌号”是什么意思谢谢,但是一个身份证呢?一个人可以拥有多个房子的地方?e、 g.他们在第一个密钥/id houseDict[0]中有3个房屋,如果他们都有相同的客户,则任一查询都可能返回多个房屋。区别在于这些房屋是否包含相同的客户实例,或者是否包含具有相同ID的不同实例。对不起,我在上一次评论中应该更清楚。因此,在houseDict[0]中,假设3个House数组元素的客户是John。那么,您将如何使用lambda检索它。如果不搜索整个字典,即不搜索houseDict[1],houseDict[2]@S.Bane,上述任何查询都可以解决您的问题,对于您的数据结构(字典),除了迭代所有条目之外,没有其他方法。@S.Bane这将是
houseDict[0]。其中(S=>S.GetCustomer()==客户)
您在问题中陈述的内容。我不知道你说的“不知道如何缩小门牌号”是什么意思