【发布时间】:2019-03-17 01:55:07
【问题描述】:
这是我需要在绑定之前对其进行升序排序的代码。这是从定义了汽车类型并附加到此公共控件中的 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;
}
【问题讨论】:
-
你有一个简单的问题,粘贴了一大块看似过于复杂的代码,到处使用反射和强制转换,你到底想做什么?
-
我有一个具有数据网格的用户控件,我需要发送搜索文本以匹配返回结果中的所有值并绑定到网格。但它并不像听起来那么简单。所以我需要加载那些排序(升序)的匹配。第 1 行和第 3 行已经存在,我正在对其进行更改以使其工作,包括排序
-
@Rianna - 您不能只转储大量未定义类型的代码,然后让我们猜测发生了什么。请提供minimal reproducible example。
-
所以,正如我之前提到的。 a) 将
IEnumerable cars更改为var cars。 b) 在运行时,请在分配了cars后,在Immediate Window中输入?cars.GetType()。它的类型是什么? -
这是我在更改为 var cars 后在运行时得到的。我从 Sedan 表单中获得了附加到“搜索器”的正确类型。 {Name = "List
1" FullName = "System.Collections.Generic.List1[[XYZ.Core.SedanCode, XYZ.Core, Version=8.6.1.0, Culture=neutral, PublicKeyToken=null]]"} System.Type {System.RuntimeType}
标签: c# list linq sorting ienumerable