|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具)
- 查询对象(上例中为list变量)为IEnumerable<T>或IQueryable<T>范例
- 查询前往了局一样为IEnumerable<T>或IQueryable<T>范例
Linq分为:Linqtoobjects、LinqtoDataSets、LinqtoSQL、LinqtoEntities、LinqtoXML五类。
复杂利用
- 范例查询变量=
- from一时变量in汇合对象或数据库对象
- [where前提表达式]
- [orderby前提]
- select一时变量或一时变量中被查询的值
- [groupby]
①一般查询:
- //数据源
- int[]arr=newint[]{0,1,2,3,4,5,6,7,8,9};
- //Linq查询
- varresult=
- fromiteminarr//声明一时变量item,并申明其为数组arr中的元素,item
- whereitem>4
- selectitem;//将查询了局(item)增加到result中
- //遍历Linq查询了局,实践上是“Linq查询”是陪伴foreach实行的,即在foreach实行前“Linq查询”不会实行
- foreach(intiinresult)
- {
- Console.Write(i);//输入56789
- }
②查询并排序:
- int[]arr=newint[]{0,1,2,3,4,5,6,7,8,9};
- varresult=
- fromiteminarr
- whereitem>4
- orderbyitemdescending//降序分列
- selectitem;
- foreach(intiinresult){
- Console.Write(i);//输入:98765
- }
③范例转换:
- int[]arr=newint[]{0,1,2,3,4,5,6,7,8,9};
- varresult=
- fromiteminarr
- whereitem>4
- selectstring.Format("值:{0}",item);//转化为String范例,并格局化
- foreach(stringiinresult){//变量i变动为string范例
- Console.Write(i);//输入“值:5值:6值:7值:8值:8”
- }
④查询单一值:
- int[]arr=newint[]{0,1,2,3,4,5,6,7,8,9};
- intresult0=(fromiteminarrwhereitem>4selectitem).Count();//全部语句被一堆()抱起来,统计数量
- intresult1=(fromiteminarrwhereitem>4selectitem).Max();//查询最年夜值
- Console.WriteLine(result0);//输入:5
- Console.WriteLine(result1);//输入:9
from子查询
- classProgram
- {
- staticvoidMain(string[]args)
- {
- //创立一个相似二维数组的泛型变量arr,用于存储先生信息
- Listarr=newList
- {
- newStudent{name="李宁",scores=newList{11,12,34}},
- newStudent{name="阿迪",scores=newList{11,16,34}},
- newStudent{name="耐克",scores=newList{18,12}},
- };
- //查询先生分数年夜于15分的纪录
- varresult=
- fromstuinarr//声明一时变量stu
- fromscinstu.scores//声明一时变量sc用于“子查询”,
- wheresc>15
- selectnew{name=stu.name,score=sc};//将查询了局“投影”到一个新的对象中,该对象有name和score两个属性。
- foreach(varsinresult){
- Console.WriteLine(s.name+":"+s.score);
- }
- }
- }
- classStudent
- {
- publicstringname;//先生姓名
- publicListscores;//先生分数,一个先生能够有多个分数
- }
输入了局:上述示例,实践是每一个先生都与其分数做了屡次联系关系,并将查询了局存进新的对象(new{...})中。
联系关系多个数据源
- //界说数据源
- char[]upper={A,B,C};
- char[]lower={x,y,z};
- //联系关系两个数据源
- varresult0=
- fromupinupper
- fromloinlower
- selectnew{upper=up,lower=lo};
- foreach(variteminresult0){
- Console.WriteLine(item.upper+""+item.lower);
- }
- //联系关系两个数据源,并按前提选择
- varresult1=
- fromupinupper
- fromloinlower
- whereup!=B
- selectnew{upper=up,lower=lo};
- foreach(variteminresult1){
- Console.WriteLine(item.upper+""+item.lower);
- }
两次输入了局分离为:
分组
①复杂分组
- classProgram
- {
- staticvoidMain(string[]args)
- {
- //界说数据源
- List<Product>arr=newList<Product>
- {
- newProduct{name="衬衫",price=13.9m,cid=1},
- newProduct{name="短裤",price=199.2m,cid=1},
- newProduct{name="奥迪",price=1.6m,cid=2},
- newProduct{name="奔腾",price=2.7m,cid=2},
- newProduct{name="歼十",price=82.3m,cid=3},
- newProduct{name="播音",price=91.3m,cid=3},
- };
- varresult=
- frompinarr
- grouppbyp.cid;
- //遍历组别
- foreach(vargpinresult){
- Console.WriteLine("==============");
- //遍历每构成员
- foreach(varpdingp){
- Console.WriteLine("{0}-{1}-{2}",pd.name,pd.price,pd.cid);
- }
- }
- Console.Read();
- }
- }
- classProduct
- {
- publicstringname;//商品称号
- publicdecimalprice;//商品代价
- publicintcid;//商品分类
- }
此处的分组并不是SQL中的分组,SQL中的分组次要用于分组统计。而此处的分组是将本来“一维的数据”依照必定划定规矩分构成“二维的数据”,其输入了局:
②对组对象处置
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。 |
|