请教一个关于IEnumerable的OrderBy问题

道宣 2012-11-08 10:06:15
IEnumerable<t_bas_dept> list = new t_bas_deptBLL().ListAll().OrderBy(p => p.parent_dept);
cmbParentDept.DataSource = list;
cmbParentDept.ValueMember = "id";
cmbParentDept.DisplayMember = "dept_name";

请教:为什么第一句,在不使用.OrderBy(p => p.parent_dept)排序之前,可以成功的添加到combobox控件列表中。但是在使用了之后就没办法添加进去了呢?
...全文
249 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2012-11-08
  • 打赏
  • 举报
回复
引用 楼主 clrclr 的回复:
IEnumerable<t_bas_dept> list = new t_bas_deptBLL().ListAll().OrderBy(p => p.parent_dept); cmbParentDept.DataSource = list; cmbParentDept.ValueMember = "id"; cmbParentDept.DisplayMember……
这个和order by没关系吧... orderby是延迟查询的 你的数据有问题吧, parent_dep 为NULL 或类型问题 你单步调试一下,,对比一下排序前和排序后的数据
心灵彩虹 2012-11-08
  • 打赏
  • 举报
回复

public static IEnumerable<T> OrderBy<T>(this IEnumerable<T> list, string sortExpression)         {             sortExpression += "";             string[] parts = sortExpression.Split(' ');             bool descending = false;             string property = "";               if (parts.Length > 0 && parts[0] != "")             {                 property = parts[0];                   if (parts.Length > 1)                 {                     descending = parts[1].ToLower().Contains("esc");                 }                   PropertyInfo prop = typeof(T).GetProperty(property);                   if (prop == null)                 {                     throw new Exception("No property '" + property + "' in + " + typeof(T).Name + "'");                 }                   if (descending)                     return list.OrderByDescending(x => prop.GetValue(x, null));                 else                    return list.OrderBy(x => prop.GetValue(x, null));             }               return list;         }

Example:
class Customer {   public string Name{get;set;} }  
 var list = new List<Customer>();  
 list.OrderBy("Name desc"); 

心灵彩虹 2012-11-08
  • 打赏
  • 举报
回复

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;

namespace AroLibraries.ExtensionMethods.Enumerable
{
    public static class IEnumerableExt
    {

        public static IOrderedEnumerable<TSource> Ext_OrderBy<TSource, TKey>(this IEnumerable<TSource> enumerable, Func<TSource, TKey> keySelector, bool descending)
        {
            if (enumerable == null) { return null; }
            if (descending)
            {
                return enumerable.OrderByDescending(keySelector);
            }
            return enumerable.OrderBy(keySelector);
        }
        public static IOrderedEnumerable<TSource> Ext_OrderBy<TSource>(this IEnumerable<TSource> enumerable, Func<TSource, IComparable> keySelector1, Func<TSource, IComparable> keySelector2, params Func<TSource, IComparable>[] keySelectors)
        {
            if (enumerable == null)
            {
                return null;
            }
            IEnumerable<TSource> current = enumerable;
            if (keySelectors != null)
            {
                for (int i = keySelectors.Length - 1; i >= 0; i--)
                {
                    current = current.OrderBy(keySelectors[i]);
                }
            } current = current.OrderBy(keySelector2);
            return current.OrderBy(keySelector1);
        }
        public static IOrderedEnumerable<TSource> Ext_OrderBy<TSource>(this IEnumerable<TSource> enumerable, bool descending, Func<TSource, IComparable> keySelector, params Func<TSource, IComparable>[] keySelectors)
        {
            if (enumerable == null)
            {
                return null;
            }
            IEnumerable<TSource> current = enumerable; if (keySelectors != null)
            {
                for (int i =
                    keySelectors.Length - 1; i >= 0; i--)
                {
                    current = current.Ext_OrderBy(keySelectors[i], descending);
                }
            } return current.Ext_OrderBy(keySelector, descending);
        }
   }
}


threenewbee 2012-11-08
  • 打赏
  • 举报
回复
List<t_bas_dept> list = new t_bas_deptBLL().ListAll().OrderBy(p => p.parent_dept).ToList();

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧