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. 什么是查询?它有什么用途? “ ...
随机推荐
- 【codeforces 546B】Soldier and Badges
time limit per test3 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- [Angular] @ContentChild and ngAfterContentInit
@ContentChild normally works with ngAfterContentInit lifecycle. @ContentChild is used for looking in ...
- amazeui中内置的web组件有哪些且如何用
amazeui中内置的web组件有哪些且如何用 一.总结 一句话总结: 1.组件还是jquery.js+amazeui.js,和插件一样,准确的说是amazeui.css+jquery.js+amaz ...
- 查询系统状态 内存大小 cpu信息 设备负载情况
1.1 查看内存状态 /proc/meminfo里面存放着内存的信息 查看内存命令(包括虚拟内存swap): free -h (低版本系统可能不支持-h) 或者 free -m (以mb单位显示) a ...
- hexo主题选择和配置
之前用next主题,发现文章标题都是h2,不利于seo,想着通过改模板改成h1的,发现很繁琐.今天发现,通过下载指定版本的next后,标题自动是h1的. 参考网页https://notes.iissn ...
- hdu 2037 这个夏天不AC
这个夏天不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- JScript实现将指定目录下的vc工程加到解决方案
作者:朱金灿 来源:http://blog.csdn.net/clever101 main(); function main() { try { var WSShell = WScript.Creat ...
- Redis实战:如何构建类微博的亿级社交平台
微博及 Twitter 这两大社交平台都重度依赖 Redis 来承载海量用户访问.本文介绍如何使用 Redis 来设计一个社交系统,以及如何扩展 Redis 让其能够承载上亿用户的访问规模. 虽然单台 ...
- UVa 12657 Boxes in a Line(应用双链表)
Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to right. Your ...
- OpenCV图像的基础叠加
程序及分析 /* * FileName : blend.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Mon 28 Ju ...