如何在LINQ中的其他查询中以参数化方式使用查询结果
本文关键字:查询 参数 方式使 结果 其他 LINQ | 更新日期: 2023-09-27 18:20:11
我将使用LINQ中查询的输出作为其他。。。以下是数据库处理程序的定义:
DataClassDataContext DB = new DataClassDataContext();
下面是查询的连续性及其结果的利用率。
var axleIDQuery = (from Axles in DB.Axles
where Axles.Name == axleComboBox.Text
select Axles.AxleID).singleOrDefault();
var checkpointIDQuery = from Checkpoints in DB.Checkpoints
where Checkpoints.AxleID == AxleIDQuery
select new{ Checkpoints.checkpointID };
var AVLQuery = from AVLs in DB.AVLs
where AVLs.checkpointID == checkpointIDQuery.toString();
select new{
AVL.Vehicle,
AVL.MCT,
AVL.CheckpointID
};
剩下的就是尝试呈现结果:
DataGridView1.DataSource = AVLQuery.toLost();
问题是数据网格视图中不会显示任何内容。有人能告诉我错误的部分吗?!
PS。调试显示问题出在第三个查询上。因为中间一个的结果可以显示在datagridview中,这是理所当然的。
checkpointIDQuery
是一个查询结果,当求值时它将是集合,但您只需为它执行ToString
。
所以当哪里检查条件总是错误的
为了快速解决问题,您可以使用联接子句像这样更改查询
var AVLQuery = from AVLs in DB.AVLs
join cId in checkpointIDQuery on AVLs.checkpointID equals cId.checkpointID
select new{
AVL.Vehicle,
AVL.MCT,
AVL.CheckpointID
};
更新:如果你想删除singleOrDefault
,那么你需要像这个一样更改你的查询
var axleIDQuery = from Axles in DB.Axles
where Axles.Name == axleComboBox.Text
select Axles.AxleID;
var checkpointIDQuery = from Checkpoints in DB.Checkpoints
join axelId in axleIDQuery on Checkpoints.AxleID equals axelId
select new{ Checkpoints.checkpointID };