c#(LINQ查询)

c#

LINQ查询

  • LINQ查询是对容器内容进行筛选的一个操作,与sql语句类似
表达式写法
  • 表达式写法与sql语句的写法及其相似
    举个例子(这边照抄了siki老师的例子):
var res = from m in masterList              //表示从masterList集合中查询
                                            //每个元素在本次查询中叫做m
where m.Level > 8 && m.Menpai == "丐帮"     //添加查询条件
select m;                                   //返回查询结果
扩展方法写法
  • 可以写一个方法,参数是要查找的元素类型,返回值是bool型,作为list的Where方法的参数传进去
    举个例子(还是siki老师的例子):
var res = masterList.Where(Test1);
static bool Test1(MartialArtsMaster master)
{
	if(master.Level > 8) return true;
	return false;
}
Lambda表达式写法
  • 与扩展方法类似,不过这边直接用Lambda写法简化代码量
    例子:
var res = masterList.Where(m=>m.Level>8);    //一句话搞定 是真的香
联合查询
  • 联合查询,顾名思义,联合多个list进行查询,联合查询的时候,会对每俩条来自不同list的数据建立映射查询一次,比如查询俩个list,一个有6个元素,一个有7个元素,总共会生成42条数据来供查询
    写法实例:
var res = from m in masterList
		from k in kongfuList
		where m.kongfu == k.Name && k.Power > 90
		select m;

当你要将俩个列表的元素都返回时,不妨建立新的联合变量,如下

var res = from m in masterList
		from k in kongfuList
		where m.kongfu == k.Name && k.Power > 90
		select new{master = m, kongfu = k};
  • 联合查询的扩展方法写法,这边需要通过SelectMany将俩个表联合起来,映射成一个新的表,然后再对其进行Where查询,用法难以言表,具体大家康康下面的例子
    例子:
var res = masterList.SelectMany(m => kongfuList,(m,k) => new{master = m,kongfu = k}).Where(x => x.master.Kongfu == x.kongfu.Name);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值