Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将此双匹配转换为LINQ_C#_Linq - Fatal编程技术网

C# 将此双匹配转换为LINQ

C# 将此双匹配转换为LINQ,c#,linq,C#,Linq,我有一个列表框,用户可以从他们预订的公交车中选择一个或多个公交车号码(用于升级)。我还有一张一个人预订的所有公交车的列表。BusFactory.lstbuss 这很好,但我想要的是一种在linq中实现的方法。细分是它获取用户选择的所有数字,并将其与用户预订的公交车进行匹配,然后返回公交车列表 private void btnAdd_Click(object sender, EventArgs e) { List<Bus> lstBuses = getS

我有一个列表框,用户可以从他们预订的公交车中选择一个或多个公交车号码(用于升级)。我还有一张一个人预订的所有公交车的列表。BusFactory.lstbuss

这很好,但我想要的是一种在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;
    }
private void btnAdd\u单击(对象发送者,事件参数e)
{
List lstBuses=getselectedbus();
}
私有列表GetSelectedBus()
{
List lstBus=新列表();
foreach(lstbuss.SelectedItems中的字符串s)
{
foreach(总线工厂中的总线.lstbus)
{
if(s==bus.ElementNumber.ToString())
lstBus.Add(总线);
}
}
返回lstBus;
}
lstbuss.SelectedItems.Cast().Intersect(
BusFactory.lstbuss.Select(b=>b.ElementNumber.ToString())
)

这还具有O(n)而不是O(n2)的额外好处

感谢您的快速响应。如何将其添加到新的选定总线列表中?
lstBuses.SelectedItems.Cast<string>().Intersect(
    BusFactory.lstBuses.Select(b => b.ElementNumber.ToString())
)