Linq发布查询两个数据集

led*_*per 0 c# linq asp.net

这是我正在使用的代码:

        Collection<WorkOrderLabor> workOrder = new Collection<WorkOrderLabor>();
        Collection<ServiceItem> serviceItems = new Collection<ServiceItem>();

        serviceItems  = from si in serviceItems
                        join cw in workOrder on si.ServiceKey equals cw.Key
                        select new { si };

        foreach (ServiceItem item in serviceItems)
            ctrl.Items.Add(...);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.ObjectModel.Collection<ServiceItem>'
Run Code Online (Sandbox Code Playgroud)

我相信这有望成为一个简单的解决方案,但我无法弄清楚.这背后的逻辑是我需要根据传递给此方法的密钥查找工作订单,然后获取工作订单所具有的所有服务项并迭代它们以将它们放入组合框中.

Rus*_*Cam 5

应该是

Collection<WorkOrderLabor> workOrder = new Collection<WorkOrderLabor>();
Collection<ServiceItem> serviceItems = new Collection<ServiceItem>();

var filteredItems = from si in serviceItems
                    join cw in workOrder on si.ServiceKey equals cw.Key
                    select si;

foreach (ServiceItem item in filteredItems)
    ctrl.Items.Add(...);
Run Code Online (Sandbox Code Playgroud)

您不希望IEnumerable<>从LINQ表达式返回匿名类型,而是返回IEnumerable<ServiceItem>