首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

咨询EF 的代码怎么写成通用的

2013-09-06 
咨询EF 的代码如何写成通用的?请教:按照“不要重复”的理念,如何将如下代码写成通用的代码,也就是 abc 、 abc

咨询EF 的代码如何写成通用的?
   请教:按照“不要重复”的理念,如何将如下代码写成通用的代码,也就是 abc 、 abcs 可以更换为其他。
   其中 public DBSet<abc> abcs {get; set;}

public List<abc> Query()
        {
            var datas = from p in db.abcs
                        orderby p.ID
                        select p ;
            if (datas.Count()>0) 
               return datas.ToList();
           else 
              return null;
        } 
  mvc EF
[解决办法]
想了下,好人做到底,帮你写一个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Test
    {
        public int ID { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<Test>() 
            { 
                new Test() { ID = 3 },


                new Test() { ID = 2 },
                new Test() { ID = 9 },
                new Test() { ID = 5 },
                new Test() { ID = 7 },
                new Test() { ID = 1 }
            };
            foreach (var item in OrderByID(list.AsQueryable<Test>()))
            {
                Console.WriteLine(item.ID);
            }
        }

        static List<T> OrderByID<T>(IQueryable<T> datasource)
        {
            var p = Expression.Parameter(typeof(T), "p");
            var bodyexpr = Expression.MakeMemberAccess(p, typeof(T).GetProperty("ID"));
            var lambdaexpr = Expression.Lambda(bodyexpr, p) as Expression<Func<T, int>>;
            var list = datasource.OrderBy(lambdaexpr).ToList();
            return list.Count() == 0 ? null : list;
        }
    }
}

热点排行