使用linq或lambda表达式对集合排序并分配给集合
我必须根据另一个集合的排序顺序字段对集合进行排序。我是这样做的使用linq或lambda表达式对集合排序并分配给集合,linq,lambda,Linq,Lambda,我必须根据另一个集合的排序顺序字段对集合进行排序。我是这样做的 var objresult = from err in ibusSoftErrors.iclbEmployerError join codvalue in lclbCodeValue on err.severity_id equals codvalue.icdoCodeValue.code_id
var objresult = from err in ibusSoftErrors.iclbEmployerError
join codvalue in lclbCodeValue
on err.severity_id equals codvalue.icdoCodeValue.code_id
orderby codvalue.icdoCodeValue.code_value_order
select ibusSoftErrors.iclbEmployerError;
ibusSoftErrors.iclEmployerError是我将在网格中使用的集合。我的问题是,当我尝试将查询结果分配给此集合时,我遇到以下错误
无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.ObjectModel.Collection”。存在显式转换(是否缺少转换?
请帮助我使用lambda或linq对集合进行排序。绑定通常需要IList实现
var objresult = from err in ibusSoftErrors.iclbEmployerError
join codvalue in lclbCodeValue
on err.severity_id equals codvalue.icdoCodeValue.code_id
orderby codvalue.icdoCodeValue.code_value_order
select err;
var toBind = objresult.ToList();
grid.ItemsSource = toBind;
应该这样做(假设使用WPF/Silverlight数据网格)也许您的意思是
select err
而不是选择整个集合?:)使用Collection
有什么具体原因吗?@Destrictor,我试过使用select err
,但仍然出现相同的错误。@DanielHilgarth,对于我们正在使用collections的完整项目。这是准备收集和保存的常用方法。此收集对象将在不同的屏幕中使用。网格源未以相同的方法分配。UI有一个框架,负责将集合分配给网格源。所以我需要按正确的顺序排列IBusFoftErrors.ICLBEmployeeError。@SelviMoies,您的框架是否将IEnumerable转换为IList?没有vc。它将在错误下查找集合,并将其分配给数据源设置为该集合的网格。我们不能将排序结果分配回集合。像而不是var objresult
到ibusofterrors.iclbemployeerror
?我的意思是,您的linq语句返回一个IEnumerable,它不能直接绑定到控件。如果您想绑定,请将其转换为IList(通过调用ToList、ToArray…)谢谢您的建议@vc。我要试试看。