【发布时间】:2026-01-18 00:50:01
【问题描述】:
以下是我的有效代码。但正如你所见,我不得不写两次 select
var lstCargoRequestVM =
(from c in db.Cargo
join v in db.Vehicles on c.VehicleID equals v.VehicleID
join cmp in db.Companies on c.CompanyID equals cmp.CompanyID
where c.Isdeleted == false && c.IsActive == true
select new CargoRequestVM
{
CargoId = c.CargoID,
CompanyName = cmp.CompanyName,
VehicleNo = v.VehicleNo,
Date = c.DateOfPassage,
Type = c.Type.ToString()
})
.AsEnumerable()
.Select(x => new CargoRequestVM
{
CargoId = x.CargoId,
CompanyName = x.CompanyName,
VehicleNo = x.VehicleNo,
Date = x.Date,
Type = CargoElements.CargoTypeName(x.Type.ToString())
}).ToList();
是否可以在不必写两次 select 的情况下做同样的事情?在某些情况下,可能有十几个属性。我不想让我的代码不必要地冗长。
【问题讨论】:
-
是什么让你觉得你需要写 2 个
select语句? -
你可以做
(from ....where...).AsEnumerable().Select(x => new CargoRequestVM{ .... }); -
您使用的是 EF 吗?在第一次选择中尝试使用 CargoElements.CargoTypeName 时是否出现异常?
-
我无法申请
AsEnumerable,因为它给了我错误:..must end with select or group by..