zoukankan
html css js c++ java
Linq 入门系列 [Group,Distinct,Union,Concat,Intersect,Except篇]
/**/
///////////////////////////
/
///
以下是Group,Distinct,Union,Concat,Intersect,Except的例子和解释
///////////////////////////
//
class
Program
{
DB
#region
DB
private
static
List
<
Student
>
GetStudents()
{
List
<
Student
>
students
=
new
List
<
Student
>
{
new
Student
{ Name
=
"
YOUNG
"
, Age
=
25
, Language
=
"
Chinese
"
}
,
new
Student
{ Name
=
"
JESSIE
"
, Age
=
21
, Language
=
"
Scotland
"
}
,
new
Student
{ Name
=
"
KELLY
"
, Age
=
18
, Language
=
"
English
"
}
,
new
Student
{ Name
=
"
JUNE
"
, Age
=
20
, Language
=
"
Chinese
"
}
,
new
Student
{ Name
=
"
ADRIAN
"
, Age
=
22
, Language
=
"
Italy
"
}
,
new
Student
{ Name
=
"
BRUCE
"
, Age
=
17
, Language
=
"
Scotland
"
}
,
new
Student
{ Name
=
"
BRANT
"
, Age
=
30
, Language
=
"
Germany
"
}
,
new
Student
{ Name
=
"
BEN
"
, Age
=
25
, Language
=
"
Chinese
"
}
}
;
return
students;
}
#endregion
static
void
Main(
string
[] args)
{
List
<
Student
>
studentList
=
GetStudents();
//
Group(studentList);
//
Distinct(studentList);
//
Union(studentList);
//
Concat(studentList);
Intersect(studentList);
//
Except();
}
Group,Distinct,Union,Concat,Intersect,Except
#region
Group,Distinct,Union,Concat,Intersect,Except
private
static
void
Group
<
T
>
(T obj)
{
UsingGroupToCollectGrouping(obj);
//
<hr>用group将集合体分组:<br>
//
<div class='result'>Language:Chinese</div>
//
<div class='result'>——YOUNG</div>
//
<div class='result'>——JUNE</div>
//
<div class='result'>——BEN</div>
//
<div class='result'>Language:Scotland</div>
//
<div class='result'>——JESSIE</div>
//
<div class='result'>——BRUCE</div>
//
<div class='result'>Language:English</div>
//
<div class='result'>——KELLY</div>
//
<div class='result'>Language:Italy</div>
//
<div class='result'>——ADRIAN</div>
//
<div class='result'>Language:Germany</div>
//
<div class='result'>——BRANT</div>
}
private
static
void
UsingGroupToCollectGrouping
<
T
>
(T obj)
{
Console.WriteLine(
"
<hr>用group将集合体分组:<br>
"
);
var stu
=
from student
in
RevealChangeType(obj)
group student by student.Language into studentsgroup
select
new
{ lang
=
studentsgroup.Key, member
=
studentsgroup }
;
foreach
(var g
in
stu)
{
Console.WriteLine(
string
.Format(
"
<div class='result'>Language:{0}</div>
"
, g.lang));
foreach
(var student
in
g.member)
{
Console.WriteLine(
string
.Format(
"
<div class='result'>——{0}</div>
"
, student.Name));
}
}
}
private
static
void
Distinct
<
T
>
(T obj)
{
UsingDistinctFilterSame(obj);
//
<hr>用Distinct将过滤相同项:<br>
//
<span class='result'>Chinese</span>
//
<span class='result'>Scotland</span>
//
<span class='result'>English</span>
//
<span class='result'>Italy</span>
//
<span class='result'>Germany</span>
}
private
static
void
UsingDistinctFilterSame
<
T
>
(T obj)
{
Console.WriteLine(
"
<hr>用Distinct将过滤相同项:<br>
"
);
var lang
=
(from stu
in
RevealChangeType(obj)
select stu.Language).Distinct();
foreach
(var l
in
lang)
{
Console.WriteLine(
string
.Format(
"
<span class='result'>{0}</span>
"
, l));
}
}
private
static
void
Union
<
T
>
(T obj)
{
Console.WriteLine(
"
<hr>用Union连接不同集合体:<br>
"
);
string
[] stringArray
=
{
"
Ajax
"
,
"
Csharp
"
,
"
Javascript
"
,
"
Css Desige
"
,
"
Asp.net
"
,
"
Gis
"
,
"
Chinese
"
}
;
var lang
=
(from stu
in
RevealChangeType(obj)
select stu.Language).Union(stringArray);
//
Union会自动过滤各集合体中的相同项,无需Distinct
foreach
(var l
in
lang)
{
Console.WriteLine(
string
.Format(
"
<span class='result'>{0}</span>
"
, l));
}
}
private
static
void
Concat
<
T
>
(T obj)
{
Console.WriteLine(
"
<hr>用Concat连接不同集合体:<br>
"
);
string
[] stringArray
=
{
"
Ajax
"
,
"
Csharp
"
,
"
Javascript
"
,
"
Css Desige
"
,
"
Asp.net
"
,
"
Gis
"
,
"
Chinese
"
}
;
var lang
=
(from stu
in
RevealChangeType(obj)
select stu.Language).Concat(stringArray);
//
Concat不会自动过滤各集合体中的相同项
foreach
(var l
in
lang)
{
Console.WriteLine(
string
.Format(
"
<span class='result'>{0}</span>
"
, l));
}
}
private
static
void
Intersect
<
T
>
(T obj)
{
Console.WriteLine(
"
<hr>用Intersect取不同集合体的相同项(交集):<br>
"
);
string
[] Book1Array1
=
{
"
Csharp
"
,
"
Javascript
"
,
"
FrameWork
"
,
"
Use Compute
"
,
"
WebDesign
"
}
;
string
[] Book1Array2
=
{
"
Chanese
"
,
"
English
"
,
"
Use Compute
"
,
"
Business
"
,
"
WebDesign
"
}
;
//
var books = Book1Array1.Intersect(Book1Array1);
//
<hr>用Intersect取不同集合体的相同项(交集):<br>
//
<span class='result'>Csharp</span>
//
<span class='result'>Javascript</span>
//
<span class='result'>FrameWork</span>
//
<span class='result'>Use Compute</span>
//
<span class='result'>WebDesign</span>
var books
=
Book1Array .Intersect(Book1Array2);
//
<hr>用Intersect取不同集合体的相同项(交集):<br>
//
<span class='result'>Use Compute</span>
//
<span class='result'>WebDesign</span>;
foreach
(var book
in
books)
{
Console.WriteLine(
string
.Format(
"
<span class='result'>{0}</span>
"
, book));
}
}
private
static
void
Except()
{
string
[] Book1Array1
=
{
"
Csharp
"
,
"
Javascript
"
,
"
FrameWork
"
,
"
Use Compute
"
,
"
WebDesign
"
}
;
string
[] Book1Array2
=
{
"
Chanese
"
,
"
English
"
,
"
Use Compute
"
,
"
Business
"
,
"
WebDesign
"
}
;
Console.WriteLine(
"
<hr>用Except从集合体中排出和另一个集合体相同的项:<br>
"
);
var Books2
=
Book1Array1.Except(Book1Array2);
foreach
(var book
in
Books2)
{
Console.WriteLine(
string
.Format(
"
<span class='result'>{0}</span>
"
, book));
}
}
#endregion
private
static
IEnumerable
<
Student
>
RevealChangeType
<
T
>
(T obj)
{
IEnumerable
<
Student
>
student
=
obj
as
IEnumerable
<
Student
>
;
return
student;
}
}
sealed
class
Student
{
public
int
age;
public
int
Age
{
get
{
return
age; }
set
{ age
=
value; }
}
private
string
name;
public
string
Name
{
get
{
return
name; }
set
{ name
=
value; }
}
private
string
language;
public
string
Language
{
get
{
return
language; }
set
{ language
=
value; }
}
}
查看全文
相关阅读:
day31-python之内置函数
day30-python之socket
day28-python之property
day27-python之迭代器协议
day26-python之封装
day25-python之继承组合
初识AJAX
写博客的心得
web前端常见面试题
学习网络安全的网站
原文地址:https://www.cnblogs.com/RuiLei/p/820473.html
最新文章
python 爬虫 5i5j房屋信息 获取并存储到数据库
sentry配置不当导致ssrf漏洞
Web中间件常见安全漏洞总结
Spring 历史漏洞复现
端口对应服务及相应漏洞
Imagetragick RCE(CVE-2016–3714)复现
Solr-rce历史漏洞复现
a标签中target属性为“_blank”时存在安全问题
mysql order by基于时间的盲注
maccms 山寨站点 V10 后门
热门文章
通过 Web Deploy 发布的配置
WIN7U X64环境下的SQL SERVER 2008R2的防火墙配置
华途软件受控XML转EXCEL
K3实现按虚拟件/组件发料
K3日志定时备份
K3数据字典备查
day53-python之会话
day35-python之协程
day34-python之进程调用
day33-python之多线程
Copyright © 2011-2022 走看看