Linq复杂对象查询
复杂的查询对象,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
where c.Region == "Asia"
select c;
Console.WriteLine("亚洲的有:");
foreach (Customer c in queryResults)
{
Console.WriteLine(c);
}
Console.ReadLine();
}
}
}
查询对象的某个元素
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
where c.Region == "Asia"
select c.City;
Console.WriteLine("亚洲的城市有:");
foreach (String city in queryResults)
{
Console.WriteLine(city);
}
Console.ReadLine();
}
}
}
查询结果只能是字符串,或者一个对象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
where c.Region == "Asia"
select new { c.City, c.Country };
Console.WriteLine("亚洲的有:");
foreach (Object item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
用Select函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
//var queryResults = from c in customers
// where c.Region == "Asia"
// select new { c.City, c.Country };
var queryResults = customers.Where(c => c.Region == "Asia").Select(c => new { c.City, c.Country });
Console.WriteLine("亚洲的有:");
foreach (Object item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
去重处理Distinct方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
//var queryResults = from c in customers
// where c.Region == "Asia"
// select new { c.City, c.Country };
var queryResults = customers.Select(c => c.Region).Distinct();
Console.WriteLine("洲有:");
foreach (Object item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
any,All查询
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
// Any All
bool anyUSA = customers.Any(c => c.Country == "USA");
if (anyUSA)
{
Console.WriteLine("有些人是美国的");
}
else
{
Console.WriteLine("没有美国的");
}
bool allAsia = customers.All(c => c.Region == "Asia");
if (allAsia)
{
Console.WriteLine("全是亚洲的人");
}
else
{
Console.WriteLine("不全是亚洲的人");
}
Console.ReadLine();
}
}
}
多级排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
orderby c.Region,c.Country,c.City // 多级排序
select new {c.Region , c.Country, c.City };
Console.WriteLine("亚洲的有:");
foreach (Object item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
使用OrderBy,ThenBy实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
//var queryResults = from c in customers
// orderby c.Region,c.Country,c.City // 多级排序
// select new {c.Region , c.Country, c.City };
var queryResults = customers.OrderBy(c => c.Region)
.ThenBy(c => c.Country)
.ThenBy(c => c.City)
.Select(c => new { c.Region,c.Country, c.City});
Console.WriteLine("亚洲的有:");
foreach (Object item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
group的使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
group c by c.Region into cg
select new { TotalSales = cg.Sum(c => c.Sales),Region = cg.Key };
var orderedResults =
from cg in queryResults
orderby cg.TotalSales descending
select cg;
foreach (var item in orderedResults)
{
Console.WriteLine(item.TotalSales+"\t:"+item.Region);
}
Console.ReadLine();
}
}
}
通过Take方法获取前几个数据
通过Skip方法,获取剩下的数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
group c by c.Region into cg
select new { TotalSales = cg.Sum(c => c.Sales),Region = cg.Key };
var orderedResults =
from cg in queryResults
orderby cg.TotalSales descending
select cg;
// Take获取前几个数据
// Skip获取后几个数据
// 出去前1个后的数据
foreach (var item in orderedResults.Skip(1))
{
Console.WriteLine(item.TotalSales + "\t:" + item.Region);
}
Console.WriteLine("----------------------------------------");
// 前1个
foreach (var item in orderedResults.Take(1))
{
Console.WriteLine(item.TotalSales + "\t:" + item.Region);
}
Console.ReadLine();
}
}
}
First与FirstOrDefault
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
var queryResults = from c in customers
group c by c.Region into cg
select new { TotalSales = cg.Sum(c => c.Sales),Region = cg.Key };
var orderedResults =
from cg in queryResults
orderby cg.TotalSales descending
select cg;
// 获取第一个数据,First和FirstOrDefault
// First方法如何数据不存在,会报错
Console.WriteLine(orderedResults.First());
Console.WriteLine(orderedResults.FirstOrDefault());
Console.WriteLine(orderedResults.First(c => c.Region == "Europe"));
Console.WriteLine(orderedResults.FirstOrDefault(c => c.Region == "Europe"));
Console.ReadLine();
}
}
}
JOIN使用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqDemo
{
class Customer
{
public string ID { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public decimal Sales { get; set; }
public override string ToString()
{
return "ID:" + ID + " City:" + City + " Country:" + Country + " Region:" + Region + " Sales:" + Sales;
}
}
class Order
{
public string ID { get; set; }
public decimal Amount { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>
{
new Customer {ID="A",City="New York",Country="USA",Region="North America",Sales=999 },
new Customer {ID="B",City="Bei Jing",Country="China",Region="Asia",Sales=1999 },
new Customer {ID="C",City="Shang Hai",Country="China",Region="Asia",Sales=9999 },
new Customer {ID="D",City="Tokyo",Country="Japan",Region="Asia",Sales=2999 },
new Customer {ID="E",City="London",Country="England",Region="Europe",Sales=3999 }
};
List<Order> orders = new List<Order>
{
new LinqDemo.Order {ID = "A",Amount = 100 },
new LinqDemo.Order {ID = "A",Amount = 200 },
new LinqDemo.Order {ID = "B",Amount = 300 },
new LinqDemo.Order {ID = "B",Amount = 400 },
new LinqDemo.Order {ID = "C",Amount = 500 },
new LinqDemo.Order {ID = "D",Amount = 600 },
};
var queryResults = from c in customers
join o in orders on c.ID equals o.ID
select new { c.ID,c.City,SalesBefore = c.Sales,NewOrder = o.Amount,SalesAfter = c.Sales + o.Amount };
foreach (var item in queryResults)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
Linq复杂对象查询的更多相关文章
- 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take
Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
- 浅谈sql 、linq、lambda 查询语句的区别
浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...
- xBIM 使用Linq 来优化查询
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- C# - LINQ 语言集成查询
LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq ...
- C#编程(六十二)---------LINQ标准的查询操作符
LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作”类型”进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. ...
- C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法
连载目录 [已更新最新开发文章,点击查看详细] 介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的.但是在编译代码时,查询语法必须转换为针对 .NET ...
- LINQ to Entities 查询注意事项
1> 排序信息丢失 如果在排序操作之后执行了任何其他操作,则不能保证这些附加操作中会保留排序结果.这些操作包括 Select 和 Where 等.另外,采用表达式作为输入参数的 First 和 ...
- LINQ数据库连接对象制造工厂
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
随机推荐
- Spring 4 CustomEditorConfigurer Example--转
原文地址:http://howtodoinjava.com/spring/spring-core/registering-built-in-property-editors-in-spring-4-c ...
- mac ssh报错处理
总结一下 1.The authenticity of host '[192.168.1.100]:22 ([192.168.1.100]:22)' can't be established. RSA ...
- 二叉查找树BST 模板
二叉查找树BST 就是二叉搜索树 二叉排序树. 就是满足 左儿子<父节点<右儿子 的一颗树,插入和查询复杂度最好情况都是logN的,写起来很简单. 根据BST的性质可以很好的解决这些东 ...
- [洛谷P2245]星际导航
题目大意:有一张n点m边的带权无向图,和一些问题,每次询问两个点之间的路径的最大边权最小是多少. 解题思路:同NOIP2013货车运输,只是数据增大,大变成小,小变成大了而已.所以具体思路见货车运输. ...
- Xshell6连接Ubuntu18.04
1.首先在自己windows10电脑上安装了xshell6,安装过程不叙述了 2.打开xshell 3.执行新建命令.打开Xshell软件后找到左上角第一个“文件”菜单并单击,弹出来一个下拉框,点击选 ...
- Linux学习-Ubuntu 18.04-安装图文教程
Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球 ...
- NodeJS代码调试
1.在Chrome打开chrome://flags/#enable-devtools-experiments 2.激活Developer Tools experiments 3.重启Chrome 4. ...
- HDU 5391-Zball in Tina Town(数论)
题目地址:pid=5391">HDU 5391 题意: Tina Town 是一个善良友好的地方,这里的每个人都互相关心.Tina有一个球,它的名字叫zball. zball非常奇妙, ...
- swift学习之数组
首先数组的定义:以有序的方式存储同样类型的值 (1)数组的简写(shorthand)语法 你能够通过Array<Element>,在这里,Element时数组存储元素的值的类型.也能够通过 ...
- Codeforces Round #313 C. Gerald's Hexagon(放三角形)
C. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...