LINQ查询表达式---------select子句
LINQ查询表达式---------select子句
1.1常见的select子句查询
class Program
{
public class PerInfo
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public List<int> Scores
{
get;
set;
}
} List<PerInfo> PerInfos = new List<PerInfo>()
{
new PerInfo
{
Id = , Name = "小白", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小日", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小月", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小明", Age = , Scores = new List<int>()
{
, , ,
}
}
}; static void Main(string[] args)
{
Program p = new Program();
var query = from q in p.PerInfos
select q;
foreach (PerInfo per in query)
{
Console.WriteLine("姓名:{0},年龄:{1}", per.Name, per.Age);
} Console.ReadLine();
}
}
输出结果:
姓名:小白,年龄:15
姓名:小日,年龄:18
姓名:小月,年龄:21
姓名:小明,年龄:19
1.2 其他形式的select查询
class Program
{
public class PerInfo
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public List<int> Scores
{
get;
set;
} public CustrInfo GetCustrInfo(List<CustrInfo> p, int id)
{
CustrInfo cInfo = (from q in p
where q.Id == id
select q).FirstOrDefault(); return cInfo;
} public override string ToString()
{
return "姓名:" + Name + " 年龄:" + Age;
}
} public class CustrInfo
{
public int Id
{
get;
set;
}
public string Tel
{
get;
set;
}
public string Email
{
get;
set;
}
public override string ToString()
{
return "邮箱:" + Email + "电话:" + Tel;
}
} public class ScoreInfo
{
public double Average
{
get;
set;
}
public int ID
{
get;
set;
}
} static void Main(string[] args)
{
List<PerInfo> perInfos = new List<PerInfo>()
{
new PerInfo
{
Id = , Name = "小白", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小日", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小月", Age = , Scores = new List<int>()
{
, , ,
}
},
new PerInfo
{
Id = , Name = "小明", Age = , Scores = new List<int>()
{
, , ,
}
}
}; List<CustrInfo> custrInfos = new List<CustrInfo>()
{
new CustrInfo {Id = , Tel = "", Email = "Xuahau@123.Com"},
new CustrInfo {Id = , Tel = "", Email = "xchads@qq.Com"},
new CustrInfo {Id = , Tel = "", Email = "kashda@q56.Com"},
new CustrInfo {Id = , Tel = "", Email = "sadhkuu@143.Com"}
}; Program p = new Program(); //1 根据查询条件查询数据源
var query1 = from q in perInfos
where q.Id >
select q; Console.WriteLine("Query1:");
foreach (PerInfo per in query1)
{
Console.WriteLine(per.ToString());
} //2 查询单个属性
var query2 = from q in perInfos
where q.Id >
select q.Name; Console.WriteLine("\nQuery2:");
foreach (string s in query2)
{
Console.WriteLine(s);
} //3 查询一个经过筛选的对象
var query3 = from q in perInfos
where q.Id >
select q.GetCustrInfo(custrInfos, q.Id); Console.WriteLine("\nQuery3:");
foreach (CustrInfo c in query3)
{
Console.WriteLine(c.ToString());
} //4 查询内部数组
var query4 = from q in perInfos
where q.Id >
select q.Scores[]; Console.WriteLine("\nQuery4:");
foreach (int i in query4)
{
Console.WriteLine(i);
} //5 表达式
var query5 = from q in perInfos
where q.Id >
select q.Scores[] * 1.1; Console.WriteLine("\nQuery5:");
foreach (int i in query5)
{
Console.WriteLine(i);
} //6 求平均数
var query6 = from q in perInfos
where q.Id >
select q.Scores.Average(); Console.WriteLine("\nQuery6:");
foreach (int i in query6)
{
Console.WriteLine(i);
} //7 查询多个属性
var query7 = from q in perInfos
where q.Id >
select new
{
q.Name, q.Age
}; Console.WriteLine("\nQuery7:");
foreach (var item in query7)
{
Console.WriteLine(item.Name + " " + item.Age);
} //8 对查询结果进行投影
var query8 = from q in perInfos
where q.Id >
select new ScoreInfo
{
ID = q.Id,
Average = q.Scores.Average()
}; Console.WriteLine("\nQuery8:");
foreach (var item in query8)
{
Console.WriteLine("{0},{1}", item.ID, item.Average);
} //9 查询平均分大于85的联系人信息
var query9 = from q in perInfos
where q.Scores.Average() >
join ci in custrInfos on q.Id equals ci.Id
select ci; Console.WriteLine("\nQuery9:");
foreach (var item in query9)
{
Console.WriteLine("{0} {1} {2}", item.Id, item.Email, item.Tel);
} Console.ReadLine();
}
}
输出结果:
Query1:
姓名:小日 年龄:18
姓名:小月 年龄:21
姓名:小明 年龄:19 Query2:
小日
小月
小明 Query3:
邮箱:xchads@qq.Com电话:120
邮箱:kashda@q56.Com电话:119
邮箱:sadhkuu@143.Com电话:999 Query4:
98
95
96 Query5:
107
104
105 Query6:
90
95
97 Query7:
小日 18
小月 21
小明 19 Query8:
2,90.5
3,95.75
4,97.5 Query9:
2 xchads@qq.Com 120
3 kashda@q56.Com 119
4 sadhkuu@143.Com 999
LINQ查询表达式---------select子句的更多相关文章
- LINQ查询表达式---------let子句
LINQ查询表达式---------let子句 let子句创建一个范围变量来存储结果,变量被创建后,不能修改或把其他表达式的结果重新赋值给它.此范围变量可以再后续的LINQ子句中使用. class P ...
- LINQ查询表达式---------join子句
LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...
- LINQ查询表达式---------orderby子句
LINQ查询表达式---------orderby子句 LINQ可以按元素的一个或多个属性对元素进行排序. class Program { public class PerInfo { public ...
- LINQ查询表达式---------group子句
LINQ查询表达式---------group子句 LINQ表达式必须以from子句开头,以select或group子句结束.使用guoup子句来返回元素分组后的结果.group 子句返回一个 IGr ...
- LINQ查询表达式---------where子句
LINQ查询表达式---------where子句 where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素. 它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用), ...
- LINQ查询表达式---------from子句
LINQ查询表达式---------from子句 LINQ的查询由3基本部分组成:获取数据源,创建查询,执行查询. //1.获取数据源 List<, , , , , }; //创建查询 var ...
- 2.3 LINQ查询表达式中 使用select子句 指定目标数据
本篇讲解LINQ查询的三种形式: 查询对象 自定义查询对象某个属性 查询匿名类型结果 [1.查询结果返回集合元素] 在LINQ查询中,select子句和from子句都是必备子句.LINQ查询表达式必须 ...
- LINQ查询表达式---------into
LINQ查询表达式---------into into 上下文关键字创建一个临时标识符,以便将 group.join 或 select 子句的结果存储到新的标识符 class Program { pu ...
- LINQ查询表达式(1) - 查询表达式基础
LINQ包括五个部分:LINQto Objects.LINQ to DataSets.LINQ to SQL.LINQ to Entities.LINQ to XML. 什么是查询?它有什么用途? “ ...
随机推荐
- [React Router v4] Conditionally Render a Route with the Switch Component
We often want to render a Route conditionally within our application. In React Router v4, the Route ...
- MONyog使用图解(一)-数据库性能监控工具
原文:MONyog使用图解(一)-数据库性能监控工具 一.安装步骤 较为简单,网上可以搜索到,此处不做详细说明. 二.使用图解 此处介绍监控数据库连接量.并发量.吞吐量.响应时间等功能 1.设置连接需 ...
- js进阶 9-5 js如何确认form的提交和重置按钮
js进阶 9-5 js如何确认form的提交和重置按钮 一.总结 一句话总结: 1.这个并不好做:onsubmit 里面的代码必须返回false才能取消onsubmit方法的执行,所以,有return ...
- Mac修改文件权限:You don’t have permission to save the file
1.从互联网上或者其他途径拿过来的工程代码,往往会报下面的提示: (1)打开文件的时候出现窗口提示You don’t have permission to save the file “project ...
- 【codeforces 776C】Molly's Chemicals
[题目链接]:http://codeforces.com/contest/776/problem/C [题意] 让你找区间[i,j] 使得sum[i..j]=k^t,这里t=0,1,2,3.. -10 ...
- Java之泛型<T> T与T的用法
<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T ...
- vector, list, deque的选用(vector适用少量对象,list适用大量对象),以及效率问题
如何选择这三个容器中哪一个,应根据你的需要而定,一般应遵循下面的原则: 1.如果你需要高效的随机存取,而不在乎插入和删除的效率,使用vector 2.如果你需要大量的插入和删除,而不关心随机存取( ...
- git如何更新fork的repository(Fork一个别人的repository,做了一些改动,再合并别人的更新)
Fork一个别人的repository,做了一些改动,想提交pull request的时候,发现原先别人的repository已经又有了一些更新了,这个时候想使得自己fork出的repository也 ...
- 分布式系统和CAP
帽子理论(CAP): C:Consistency,一致性, 数据一致更新,所有数据变动都是同步的 A:Availability,可用性, 好的响应性能,完全的可用性指的是在任何故障模型下,服务都会在有 ...
- Struts2——(3)ValueStack(值栈)
一.ValueStack 主要用于存储请求相关信息,内部结构如下 root区:被称为根存储区,是一个栈结构,栈顶元素为当前请求的Action对象. context区:被称为变量存储区,是一个Map结构 ...