Linq

Linq的连接方式

var ArgStr = " [{\"ID\":1,\"Age\":\"18\" },{\"ID\":2,\"Age\":\"19\" },{\"ID\":3,\"Age\":\"20\" }] ";
var NameStr = " [{\"ID\":1,\"Name\":\"小红\" },{\"ID\":3,\"Name\":\"小白\" },{\"ID\":4,\"Name\":\"小王\" }] ";

JavaScriptSerializer Serializer = new JavaScriptSerializer();
List<ID_Age> LeftArray = Serializer.Deserialize<List<ID_Age>>(ArgStr);

List<ID_Name> RightArray = Serializer.Deserialize<List<ID_Name>>(NameStr);


//1、左连接:
var LeftJoin = from a in LeftArray
join b in RightArray on a.ID equals b.ID into NewArray
from b in NewArray.DefaultIfEmpty()
select new
{
ID = a.ID,
Name = b != null ? b.Name : null,
Age = a.Age
};

//2、右连接:
var RightJoin = from a in RightArray
join b in LeftArray on a.ID equals b.ID into NewArray
from b in NewArray.DefaultIfEmpty()
select new
{
ID = a.ID,
Name = a.Name,
Age = b != null ? b.Age : null
};

//3、内连接:
var InnerJoin = from a in LeftArray
join b in RightArray on a.ID equals b.ID
select new
{
ID = a.ID,
Name = b != null ? b.Name : null,
Age = a.Age
};

 

 

 

 

 Linq  DataTable

var temparray = from a in temp
join b in dt_Points.AsEnumerable() on a.TagID equals b.Field<long>("TagID ")
select new Record
{
AddValue = a.AddValue,
DevUnit = b.Field<string>("DevUnit"),
TagConfigCode = b.Field<string>("TagConfigCode"),
TagID = Convert.ToInt64(a.TagID),
TagName = a.TagName,
Used = a.Used,
RecordTime = a.DateTime
};

 

Linq  group

单表的group

var SimpleTemp= from a in List1
group t by new
{
t.ID,t.Name
} into a
select new
{

Score= a.Sum(x => x.Score),
ID=  a.Key.ID,
Name= a.Key.Name,
};

 

复合表的group

var MultTemp= from a in Lst1
join b in Lst2 on Lst1.ID equals Lst2.ID
group new
{
ID = a.ID ,
Name= a.Name,
Score= b.Score
} by new
{
ID = a.ID ,
Name= a.Name,
} into t
select new
{
ID = t.Key.ID ,
Name= t.Key.Name,
AllScore= t.Sum(s => s.Score),
};

 

posted @ 2019-09-19 14:58  NinaMua  阅读(213)  评论(0编辑  收藏  举报