1、首先定义一个图书类。专门存放图书的属性信息。
代码如下:
 
 //Book.cs

 using System;

 namespace LinqTest
{
public class Book
{
public string Name { get; set; }
public string Author { get; set; }
public decimal Price { get; set; }
public DateTime ReleaseDate { get; set; } public Book()
{ } public Book(string name, string anthor, decimal price, DateTime releasedata)
{
Name = name;
Author = anthor;
Price = price;
ReleaseDate = releasedata;
}
}
}
 
2、接着新建一个类专门用来对图书类进行操作。代码如下:
 
 //BookManage.cs

 using System;
using System.Collections.Generic; namespace LinqTest
{
public static class BookManage
{
private static List<Book> _books; public static IList<Book> GetBook()
{
return _books ?? (_books = new List<Book>()
{
new Book("He", "Joke", , new DateTime()),
new Book("She", "Bob", , new DateTime()),
new Book("I", "Cham", , new DateTime())
});
}
}
}
 
3、最后在主程序中执行。
 
 //Program.cs

 using System;
using System.Collections.Generic;
using System.Linq; namespace LinqTest
{
internal class Program
{
private static void Main()
{
Console.WriteLine("/**Select Test*/\n");
var test = BookManage.GetBook().Where(c => c.Author.StartsWith("J")).Select(c => new
{
c.Name,
c.Author,
c.Price,
c.ReleaseDate
});
foreach (var i in test)
{
Console.WriteLine(i);
} Console.WriteLine("\n/**SelectMany Test*/");
var list1 = new List<int>() { , , , , , };
var list2 = new List<int>() { , , , }; var query = list1.SelectMany(c => list2);
foreach (var variable in query)
{
Console.Write("{0}", variable);
}
Console.WriteLine("\n"); Console.WriteLine("\n/*GroupBy test**/\n");
var list3 = new List<int>() { , , , , , , , , }; var group = list3.GroupBy(c => c); foreach (var variable in group)
{
Console.WriteLine("{0} Count : {1}", variable.Key, variable.Count());
}
Console.WriteLine("\n/*ToLookUp**/\n");
var list4 = new List<Book>()
{
new Book("A","B",,new DateTime()),
new Book("AA","BB",,new DateTime()),
new Book("AAA","BBB",,new DateTime()),
new Book("A","BBB",,new DateTime())
}; var lookup = list4.ToLookup(c => c.Name); foreach (var v in lookup)
{
Console.WriteLine("=====Group : {0}====", v.Key);
foreach (var g in v)
{
Console.WriteLine("Author: {0} ,Price: {1}, Release: {2}", g.Author, g.Price, g.ReleaseDate);
}
} Console.WriteLine("\nOderBy And Thenby Test!\n");
var orderquery = list4.OrderBy(c => c.Price).ThenBy(c => c.Name).Select(c => new
{
c.Name,
c.Author,
c.Price,
c.ReleaseDate
});
foreach (var item in orderquery)
{
Console.WriteLine(item);
} Console.WriteLine("\n获取集合测试!\n");
var list5 = new List<int>() { , , , , , , , , }; var newList = list5.Where(c => c > ).ToList().Select(c => new
{
c
}); foreach (var r in newList)
{
Console.WriteLine(r);
} Console.WriteLine(" \n聚合和汇总测试\n");
const double myBalance = 100.0;
int[] withdramItem = { , , , , , , };
var banlance = withdramItem.Aggregate(myBalance, (originbalance, nextwithdraw) =>
{
Console.WriteLine("originbalance:{0},nextwithdraw {1}", originbalance, nextwithdraw);
Console.WriteLine("Withdraw status:{0}", (nextwithdraw <= originbalance) ? "OK" : "Failed");
return ((nextwithdraw <= originbalance) ? (originbalance - nextwithdraw) : originbalance);
});
Console.WriteLine("Ending Balance:{0}", banlance); Console.WriteLine("\n***筛选***\n"); var query1 = BookManage.GetBook().Where(c => c.Price > ).Select(c => new
{
c.Name,
c.Author,
c.Price,
c.ReleaseDate
}).Take();
foreach (var r in query1)
{
Console.WriteLine("{0}", r);
}
}
}
}
 
4、运行结果如下:
 

 
 

LINQ 函数的实战演练测试的更多相关文章

  1. LINQ函数

    LINQ函数虽然和LINQ语句实现了同样的功能,但LINQ函数使用起来更加快捷.学过数据库的感觉LINQ语句都不难,但语句比较长. 会LINQ函数,才算会LINQ. 1.Where(),结果过滤 Li ...

  2. C++ 回调函数 实现 的测试代码

    最近项目里使用了异步Socket,使用的是完成端口做的e; Accept,receive,send 等完全的异步实现(多线程) 然后 又要多个端口使用, 后来想到包装下完成端口Socket,然后当有事 ...

  3. substr函数索引创建测试

    技术群里小伙伴,沟通说一条经常查询的SQL缓慢,单表SQL一个列作为条件,列是int数值类型,索引类型默认创建. 一.SQL文本substr函数索引创建测试 ,) nm1 ')需求,将上述SQL执行速 ...

  4. 安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少(转)

    除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的生活变得更轻松,在更短的时间里写出更棒的代码. 时光回到2008年,那时安卓还很年轻.只有几个相关的博客和谷歌官方 ...

  5. Underscore.js 函数节流简单测试

    函数节流在日常的DOM界面数据交互中有比较大的作用,可以减少服务器的请求,同时减少客户端的内存影响 Underscore.js  本省就包含了函数节流的处理函数 _.throttle 和 _.debo ...

  6. 字符串join函数跟+号测试

    字符串join函数for循环+区别: 原因是这样的,字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,然后复制上一个+操作的结果和本次操作的右操作符到这块内存空间,因 ...

  7. ABAP函数篇2 测试DATE_CONVERT_TO_FACTORYDATE

    DATE_CONVERT_TO_FACTORYDATE   根据日期返回工厂日历日期 函数功能说明: 标出工作日的计算方法 输入传输 CORRECT_OPTION = '+'如果指定的日期不是工作日, ...

  8. 【转】安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少

    本文由 ImportNew - 唐尤华 翻译自 gigavoice.如需转载本文,请先参见文章末尾处的转载要求. 除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的 ...

  9. pytest文档54-Hooks函数terminal打印测试结果(pytest_report_teststatus)

    前言 使用命令行执行pytest用例的时候,会在 terminal 终端打印整个用例的测试结果: .代表通过的用例 F代表失败的用例 E代表异常的用例 如果我们不喜欢这种报告结果,可以通过 pytes ...

随机推荐

  1. Ubuntu 16.04 LAMP server 指南 - 配置 Apache2.4,PHP7,和MariaDB(而不是MySQL)

    翻译自:https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ 昨天在虚 ...

  2. AngularJS入门教程

    1. 简介:AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是 ...

  3. ajax同步处理(使得JS按顺序执行)

    在项目中碰到一个问题: 图一: 图二: 函数1代码:这里是因为有ajax请求,默认的是异步的 //点击分页页码,请求后台返回对应页码的数据 function getdata(fewPage,flag, ...

  4. android studio 提示翻译

    1. you can import your settings from a previous version of Studio可以导入您的设置从先前版本的工作室 2. I want to impo ...

  5. Android环境变量配置

    第一步: 把这些东西全部准备好!然后jdk怎么安装我相信大家都知道.安装好jdk之后,我们来配置环境变量. 我的电脑—右键—属性—高级系统设置—环境变量 JAVA_HOME环境变量.它指向jdk的安装 ...

  6. java--面向对象---访问属性

    <第一节> private--只能用于成员变量和成员函数(限制于类而不是对象),即只能在本类中访问被定义为private 的变量 public-- protected-- <第二节& ...

  7. Javascript获取div真实高度

    第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}.这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度. 第 ...

  8. eclipse报错“Undefined variable from import: ...”解决方案

    环境 eclipse + pydev2.8.2 + python 3.5.1/python 2.7.11 + wxpython3.0 出现原因:原先默认解释器设置为python2,重装了pydev之后 ...

  9. Day7-面向对象

    面向对象编程定义 OOP编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并 ...

  10. Debian8 从本地源安装软件

    假如你从Debian官网下载了三个DVD镜像,那么就可以设置从本地源来安装软件,例如这里我从官网下载了 debian-8.6.0-amd64-DVD-1.iso,debian-8.6.0-amd64- ...