您的位置:首页 > 其它

标准查询运算符

2014-04-19 14:05 190 查看
/// <summary>
/// 8.2 标准查询运算符 - Where 查询方法
/// </summary>
static void SQOWhere()
{
List<C01Dog> list = GetDogList();
//在集合中 筛选出 青壮年 公狗们
List<C01Dog> listDog = list.Where(d => d.Gender == true && d.Age > 3 && d.Age < 39).ToList();
listDog.ForEach(d => Console.WriteLine(d.ToString()));
}

/// <summary>
/// 8.3 标准查询运算符 - Select 投射方法(返回一个 新的集合)
/// </summary>
static void SQOSelect()
{
List<C01Dog> list = GetDogList();

List<C02SmallDog> listNew = list.Select(d => new C02SmallDog() { Name = d.Name }).ToList();
}
/// <summary>
/// 8.4 标准查询运算符 - Order 排序方法
/// </summary>
static void SQOOrder()
{
List<C01Dog> list = GetDogList();
//8.4.1 升序排列
//List<C01Dog> listSorted = list.OrderBy(d => d.Age).ToList();
//8.4.2 降序排列
//List<C01Dog> listSorted = list.OrderByDescending(d => d.Age).ToList();
//8.4.3 多条件排序
//List<C01Dog> listSorted = list.OrderBy(d => d.Age).ThenBy(d => d.ID).ToList();
//8.4.4 多条件倒序
List<C01Dog> listSorted = list.OrderBy(d => d.Age).ThenByDescending(d => d.ID).ToList();

listSorted.ForEach(d => Console.WriteLine(d.ToString()));
}
/// <summary>
/// 8.5 标准查询运算符 - Join 连接集合
/// </summary>
static void TestJoin()
{
List<C01Dog> listDog = GetDogList();
List<C02DogToy> listToy = GetDogToyList();

//把 Dog集合 与 Toy集合 连接生成一个新的集合
//连接查询                                on d.ID  =    t.DogID
//返回的结果是一个 匿名类集合,程序员可以手动 的控制 返回集合里 使用 联合查询两个集合 里的 的哪些属性
var listJoined = listDog.Join(listToy, d => d.ID, t => t.DogID, (d, t) => new { DogId = d.ID, DogName = d.Name, ToyName = t.ToyName }).ToList();

listJoined.ForEach(a => Console.WriteLine(a.ToString()));

}
/// <summary>
/// 8.6 标准查询运算符 - GroupBy 为集合元素分组
/// </summary>
static void SQOGroupBy()
{
List<C01Dog> list = GetDogList();
//按照集合中 狗的 性别 分组
//IEnumerable<IGrouping<bool, C01Dog>> it = list.GroupBy(d => d.Gender);
//按照集合中 狗的 姓名 分组
var it = list.GroupBy(d => d.Name);
//将 小组迭代器 转成 小组 集合
IList<IGrouping<string, C01Dog>> listGroup = it.ToList();
//遍历 小组
foreach (IGrouping<string, C01Dog> group in listGroup)
{
//输出 小组 的 分组条件
Console.WriteLine("小组:" + group.Key);
//遍历 小组里 所有的 元素
foreach (C01Dog item in group)
{
Console.WriteLine(item.ToString());
}
Console.WriteLine("-----------------------------------------");
}
}
/// <summary>
/// 8.7 标准查询运算符 - Skip + Take 分页数据
/// </summary>
static void SQOPagedList()
{
List<C01Dog> list = GetDogList().OrderBy(d => d.ID).ToList();
//假设 每页 2行

//获取第一页 数据
//var pageOne = list.Skip(0).Take(2);
var pageOne = GetPagedListByIndex(list, 1);
Console.WriteLine("第一页 数据:");
pageOne.ForEach(i => Console.WriteLine(i.ToString()));

//获取第二页 数据
//var pageTwo = list.Skip(2).Take(2);
var pageTwo = GetPagedListByIndex(list, 2);
Console.WriteLine("第二页 数据:");
pageTwo.ForEach(i => Console.WriteLine(i.ToString()));
}
static List<C01Dog> GetPagedListByIndex(List<C01Dog> list, int pageIndex)
{
int pageSize = 2;
return list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: