Tam*_*zan 1 c# sql linq asp.net
这是我的两个表:
publicParking(publicParkingID, address, latitude, longtitude, status,
PricePerHour, maxSpaces, occupiedSpaces, freeSpaces, isOrdered)
Run Code Online (Sandbox Code Playgroud)
和
parkingLot(parkingLotID, address, latitude, longtitude, status,
PricePerHour, maxSpaces, occupiedSpaces, freeSpaces, isOrdered)
Run Code Online (Sandbox Code Playgroud)
除 ID 外,所有列都相同。
我需要在 LINQ 中编写查询,该查询将返回一个按价格排序的表,其中包含所有可用的停车位 ( publicParking/ parkingLot) - with status==true.
该表应如下所示:
ID地址纬度经度状态
我应该做一个联合,还是应该更改表格以便第一列只调用 ID?(而不是publicParkingID和parkingLotID)
我试过这段代码,但它不起作用
var union =
(from lot in parkingLots
where lot.status == true
select lot).Union( from pub in publicParkings
where pub.status==true
select pub);
Run Code Online (Sandbox Code Playgroud)
它给出了这个错误:

我正在使用 LINQPad5 和 tutorialsteacher 的代码编辑器。还有其他选择吗?
要使用Union这两个结果序列,必须包含相同的类型。在您的示例中,外部查询包含parkingLot和内部publicParking.
可以使用匿名类型解决:
var union =
(from lot in parkingLots
where lot.status == true
orderby lot.PricePerHour // don't forget ordering
select new {
ID = lot.parkingLotID,
lot.address, lot.latitude, lot.longitude, lot.status})
.Union(from pub in publicParkings
where pub.status==true
orderby pub.PricePerHour // don't forget ordering
select new {
ID = pub.publicParkingID,
pub.address, pub.latitude, pub.longitude, pub.status});
Run Code Online (Sandbox Code Playgroud)
但是对于进一步的数据处理可能更好的是自定义类:
public class ParkingData
{
public int ID {get; set;}
public string Address {get; set;}
public double Latitude {get; set;}
public string Longitude {get; set;}
public bool Status {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并像这样查询:
var union =
(from lot in parkingLots
where lot.status == true
orderby lot.PricePerHour // don't forget ordering
select new ParkingData {
ID = lot.parkingLotID,
Address = lot.address,
Latitude = lot.latitude,
Longitude = lot.longitude,
Status = lot.status})
.Union(from pub in publicParkings
where pub.status==true
orderby pub.PricePerHour // don't forget ordering
select new {
select new ParkingData {
ID = pub.publicParkingID,
Address = pub.address,
Latitude = pub.latitude,
Longitude = pub.longitude,
Status = pub.status});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |