【发布时间】:2016-03-28 19:08:24
【问题描述】:
如何使用 lambda 表达式搜索作为对象的字典值。 (使用下面的类)
Dictionary<int, House[]> houseDict = new Dictionary<int, House[]>();
假设有 3 个元素,每个元素有 10 个房子。
我如何根据元素(例如)找到属于客户的房屋/房屋
这是我到目前为止所得到的,但不知道如何缩小到 houseNumber
houseDict[0].Where(s => s.GetCustomer() == theCustomer)
这不起作用 -> houseDict[0].SelectMany(s => s.GetHouseNumber()).Where(c => c.GetCustomer() == theCustomer);
public class House
{
private static int _instances = 0;
private int houseNumber;
private bool sold;
private bool reserved;
private bool free;
private Customer customer;
public House(int theHouseNumber)
{
houseNumber = theHouseNumber;
sold = false;
reserved = false;
free = true;
}
~House()
{
_instances--;
}
public void SellHouse(Customer buyer)
{
customer = buyer;
sold = true;
free = false;
}
public void ReserveHouse(Customer reserver)
{
customer = reserver;
free = false;
sold = false;
reserved = true;
}
public void ReturnHouse()
{
customer = null;
free = true;
sold = false;
reserved = false;
}
public void BuyReservedHouse(Customer buyer)
{
sold = true;
}
public bool IsFree()
{
return free;
}
public bool IsReserved()
{
return reserved;
}
public int GetHouseNumber()
{
return houseNumber;
}
public void SetCustomer(Customer buyer)
{
customer = buyer;
}
public Customer GetCustomer()
{
return customer;
}
}
public class Customer
{
private static int _instances = 0;
private String name;
private int id = 0;
public Customer(String customerName)
{
_instances++;
name = customerName;
id = _instances;
}
public String GetName()
{
return name;
}
public int GetId()
{
return id;
}
}
【问题讨论】:
-
字典的
int键是什么?为什么要使用 key = 0 进行搜索?你能提供更多背景信息吗? -
@Michael 我已经编辑了我的帖子
-
@YacoubMassad int 键是街道,例如街道 1、街道 2。使用 key[0] 只是为了提供我想要实现的示例
-
其他一些与您的问题没有直接关系的观察结果:1) 考虑使用 get-only 属性而不是
GetZZZ()方法,2. 如果您执行很多操作,字典可能不是最好的结构在 values 而不是 keys 中搜索。
标签: c# linq dictionary lambda linq-expressions