将此双重匹配转换为LINQ
本文关键字:转换 LINQ | 更新日期: 2023-09-27 18:21:21
我有一个列表框,用户可以在其中从他们预订的公交车中选择一个或多个公交车号码(用于升级)。我还有一份一个人预订的所有巴士的清单BusFactory.lstBus
这很好,但我想要的是一种在linq中实现它的方法。细分是它获取用户选择的所有号码,并将其与用户预订的公交车进行匹配,然后返回公交车列表。
private void btnAdd_Click(object sender, EventArgs e)
{
List<Bus> lstBuses = getSelectedBuses();
}
private List<Bus> getSelectedBuses()
{
List<Bus> lstBus = new List<Bus>();
foreach (string s in lstBuses.SelectedItems)
{
foreach (Bus bus in BusFactory.lstBuses)
{
if (s == bus.ElementNumber.ToString())
lstBus.Add(bus);
}
}
return lstBus;
}
lstBuses.SelectedItems.Cast<string>().Intersect(
BusFactory.lstBuses.Select(b => b.ElementNumber.ToString())
)
这具有O(n)而不是O(n2)
的额外好处