c# - 将排序列表转换回 IEnumerable 不会返回任何结果
问题描述
这是我需要在绑定之前对其进行升序排序的代码。这是从定义了汽车类型并附加到此公共控件中的 Searcher 属性的不同控件中调用的。所以在这里我尝试将其转换为列表进行排序,计数变为0。所以我不确定在绑定到网格之前如何通过汽车类型的参数对其进行排序。
IEnumerable cars = this.Searcher.Search(_enteredText); //cars count 70
var carBL = Generics.CreateGeneric<IBindingList>(typeof(IMBindingList<>),
cars.GetType().GetGenericArguments()[0]);
grdResults.DataSource = carBL ;
我的代码试图对不起作用的结果进行排序。搜索后,汽车返回的计数为 70。
var orderedcars = cars.ToEnumerable().ToList().OrderBy(x = ?) ;
carBL 计数为 0。在排序和下一行时我没有做正确的事情。我想我需要使用 ApplySort 但不确定属性描述符应该是什么。
搜索代码(文本)
public virtual IEnumerable<T> Search(string filter)
{
List<T> somelist = new List<T>(); ;
if (lastsomelist != null && this.Searchsomelist)
{
somelist = this.SearchtheList(lastsomelist , filter);
}
else
{
somelist= this.SearchtheList(this.commoncontrol, filter);
if ((somelist.Count == 0 )
somelist.AddRange(this.SearchtheList(this.multiSearchtheList, filter));
}
if (somelist!= null && somelist.Count > 0)
lastsomelist = somelist;
else
lastsomelist = null;
return somelist;
}
解决方案
首先orderedcars.AsEnumerable();
这里不需要。OrderBy(x => x.Name);
子句返回IOrderedEnumerable<TElement>
它派生自IEnumerable<TElement>
,因此您可以直接传递orderedcars
给LoadallMacthingInventory
方法abc.LoadallMacthingInventory(orderedcars);
. 因此,没有产生结果的观察orderedcars.AsEnumerable()
不是由于AsEnumerable()
. 相反,您应该查看是否cars.Cast<ModelClass>().ToList().OrderBy(x => x.Name).Count();
大于零。如果它变为零,我的怀疑是abc.Searcher.Search(_enteredText);
给你一个空列表。您可以通过检查来确认abc.Searcher.Search(_enteredText).Count();
。
推荐阅读
- python - numpy 在 python 3.8.3 中生成错误消息
- python - 警告:调用迭代器没有完全读取缓存的数据集。为了避免数据集的意外截断
- vue.js - 在 Nuxt "v-for" 中,如何在 v-for 中的每个项目中使用相同的计算属性时避免重复计算?
- javascript - 函数返回空数组,如何解决?Javascript,猫鼬
- sql - 将 Pentaho Kette 与 PostgreSQL 连接时出错
- docker - 我做了一个 Elasticsearch 集群,我有 3 台 azure VM 机器,只有一个节点是 Master。一段时间后集群不断崩溃
- flutter - Flutter Desktop - 系统托盘实现
- python - Matplotlib 错误“x 和 y 必须具有相同的第一维,但具有形状 (1,) 和 (6,)”
- vba - 构建记录集时未找到方法或数据成员错误
- android - 如何在颤动中将 DateTime 转换为 TZDateTime?