using System;
using System.Reflection;
using System.Data.SqlClient;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
namespace xxxxxxxxxxxx
{
public class ListHelper<T>
{
public List<T> CreateList(SqlDataReader reader)
{
Func<SqlDataReader, T> readRow = this.GetReader(reader);
var results = new List<T>();
while (reader.Read())
results.Add(readRow(reader));
return results;
}
public List<T> SortList(List<T> listToSort, string propertyName, bool ascending)
{
// verify that the propertyName is valid
var propertyNames = typeof(T).GetProperties().ToList().Select(p => p.Name).ToList();
if (!propertyNames.Contains(propertyName))
throw new ArgumentOutOfRangeException("There is no property named: " + propertyName);
var paramExpression = Expression.Parameter(typeof(T), "item");
var propertyExpression = Expression.Convert(Expression.Property(paramExpression, propertyName), typeof(object));
var lambdaExpression = Expression.Lambda<Func<T, object>>(propertyExpression, paramExpression);
if (ascending)
return listToSort.AsQueryable().OrderBy(lambdaExpression).ToList();
else
return listToSort.AsQueryable().OrderByDescending(lambdaExpression).ToList();
}
private Func<SqlDataReader, T> GetReader(SqlDataReader rea
ListHelper
最新推荐文章于 2024-08-09 08:26:09 发布
这篇博客介绍了一个名为ListHelper的工具类,它利用Lambda表达式和Expression树简化了从SqlDataReader读取数据并转换为List的过程。通过提供更方便的方法,使得在处理数据库查询结果时的代码更加简洁和高效。
摘要由CSDN通过智能技术生成