2018-07-26|2018-07-26 【c#】Linq语句
会用两种写法了,第一种,firstordefault里面,直接写想要的
第二种,where里面,需要return true/false
例:
文章图片
image.png
概念如下凡是实现了IEnumerable接口的都可以用Linq语句进行查询
Linq: Language Intergrated Query 语言集成查询
在这之前,都是一个查询字符串,传递给动态库进行解析查询
IEnumerable
LINQ to SQL / XML / DataSet / Objects
Where方法
public static IEnumerable
1.where函数后面声明了将要使用的泛型
2.xxx.Where 自动传入this迭代器参数,扩展方法
3.Func
3.1.public delegate TResult Func
3.2.该方法在此处,需要传入一个 Where中 TSource类型,返回bool型
其他方法
其他方法与Where方法大同小异,都在System.Linq命名空间下的Enumerable类中。
1.最简单的数组进行Linq查询
文章图片
两次输出结果一样.png
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace LinqTest
{
class Program
{
static void Main(string[] args)
{
//Linq: Language Intergrated Query 语言集成查询
//在这之前,都是一个查询字符串,传递给动态库进行解析查询
//IEnumerable
//LINQ to SQL/XML/DataSet/Objectsint[] numbers = { 5, 10, 8, 3, 6, 12 };
//1.Query syntax
var numQuery1 = from num in numbers
where num % 2 == 0
orderby num
select num;
foreach(var x in numQuery1)
{
Console.WriteLine(x);
}
Console.ReadLine();
//2.Method syntax
var numQuery2 = numbers.Where((x) => { return (x % 2) == 0;
}).OrderBy(x => x);
foreach (var x in numQuery1)
{
Console.WriteLine(x);
}
Console.ReadLine();
}
}
}
【2018-07-26|2018-07-26 【c#】Linq语句】2.以下四个方法,达到效果相同。虽然,到现在还是没弄懂selectwhere这个复杂的泛型的结构,但是能用了;效果是,把两个list投影到一个list进行查找(据说Linq的效率还很高)。那么以后查找不遍历了,使用linq。
public class Item
{
public int ID;
public string name;
}
List> AllList = new List>();
public Item GetItem0(int id)
{
foreach (var x in AllList)
{
foreach (var y in x)
{
if (y.ID == id) return y;
}
}
return null;
}public Item GetItemByID0(int id) => AllList.SelectMany(c => c).FirstOrDefault(c => c.ID == id);
public Item GetItemByID1(int id)
{
return AllList.SelectMany(c => c).FirstOrDefault(c => c.ID == id);
}public Item GetItemByID2(int id)
{
return AllList.SelectMany(c => c).Where(c => c.ID == id).First();
}
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长