linq 查询多个集合/查询多个Datatable linq to sql 联合查询
最近接手 了一个非常古老的项目,使用aspx开发的项目,令人不得不感叹,政府的项目就是水准不太高。钱也好挣。
分库查询,多个结果集如何计算取交集。
利用sql查询返回的数据DataTable,如何去查询其中的数据,兵进行条件删选,排序等。
![]()
这里又两个DataTable数据集,分别是data1,data2.
利用linq获取联合查询,根据data1连接data2,data1为主表,相当于sql中的左连接
var datalist = from n in data1.AsEnumerable()
from m in data2.AsEnumerable()
where m.Field<string>("CoalMineID") == n.Field<string>("CollieryId_ForDevice") && m.Field<string>("SensorID") == n.Field<string>("SensorID")
select new
{
//AutoId = n.FieID<int>("AutoId");这种方式会报错,类型转换不成功,至今无解。直接所有的转ToString(),成功。
AutoId = n["AutoId"].ToString(),
CollieryId = n["CollieryId"].ToString(),
CollieryName = n["CollieryName"].ToString(),
CompanyInfoId = n["CompanyInfoId"].ToString(),
CollieryId_ForDevice = n["CollieryId_ForDevice"].ToString(),
SubStationID = n["SubStationID"].ToString(),
SensorID = n["SensorID"].ToString(),
SensorLocation = n["SensorLocation"].ToString(),
SensorType = n["SensorType"].ToString(),
DataType = n["DataType"].ToString(),
Unit = n["Unit"].ToString(),
MaximumRange = n["MaximumRange"].ToString(),
MinimumRange = n["MinimumRange"].ToString(),
UpperLimit = n["UpperLimit"].ToString(),
LowerLimit = n["LowerLimit"].ToString(),
OutageValue = n["OutageValue"].ToString(),
ReconnectValue = n["ReconnectValue"].ToString(),
IfDealed = n["IfDealed"].ToString(),
CurrValue = m["CurrValue"].ToString(),
AlarmIndicator = m["AlarmIndicator"].ToString(),
GenerationDate = m["GenerationDate"].ToString(),
ImportTime = m["ImportTime"].ToString()
};
AsEnumerable()是把DataTable转为Enumerable操作类型,
select new{}在这里面自定义显示字段。
注意:linq都是先定义,后执行,在需要的地方才会执行。
调试跟踪,成功获取到想要的数据

linq的基本操作语法:
1,linq单表如何查询a表中id等于2的数据。如何查询a表和b表两张数据,a表id对应b表tid。
单表:var model=from a1in a where a1.id=2 select a1。
多表:var model = from a1 in a join b1 in b on a1.id equals b1.tid into team select team.

浙公网安备 33010602011771号