我从Linq查询中选择了一个id,所以它是一个int但是当我再次尝试使用它时它会给我一个错误:
无法隐式转换类型 ' System.Collections.Generic.IEnumerable to' int'
var costcentre = company.CompanyCostCentres
.Where(cc => cc.Name.ToLower() == CostCentre.ToLower())
.Select(cid => cid.CompanyCostCentreId)
.ToList();
if (costcentre != null)
{
person.PersonInCompanyCostCentres.Add(new Core.Data.PersonInCompanyCostCentre
{
CompanyCostCentreId = costcentre,
UserId = person.UserId,
CompanyId = company.CompanyId,
RecordCreated = DateTime.Now,
RecordModified = DateTime.Now
});
}
答案 0 :(得分:3)
要从id列表中获取第一个int,请使用
var costcentres = company.CompanyCostCentres.Where(cc => cc.Name.ToLower() == CostCentre.ToLower()).Select(cid => cid.CompanyCostCentreId);
int costcentre= costcentres.FirstOrDefault();
答案 1 :(得分:2)
您的costcentre变量是一个列表。您可以使用public
方法代替.FirstOrDefault(predicate)
来挑选单个项目。
见下文:
.Where(predicate)
我只是更改了Where to FirstOrDefault并删除了.Select()和.ToList()
答案 2 :(得分:0)
<强>问题:强>
var costcentre = company.CompanyCostCentres.Where(cc => cc.Name.ToLower() ==
CostCentre.ToLower()).Select(cid => cid.CompanyCostCentreId).ToList();
返回一个列表。
CompanyCostCentreId = costcentre
尝试将列表分配给int
<强>解决方案:强>
如果cid.CompanyCostCentreId
是int
变化
var costcentre = company.CompanyCostCentres.Where(cc => cc.Name.ToLower() ==
CostCentre.ToLower()).Select(cid => cid.CompanyCostCentreId).ToList();
到
var costcentre = company.CompanyCostCentres.Where(cc => cc.Name.ToLower() ==
CostCentre.ToLower()).Select(cid => cid.CompanyCostCentreId).FirstOrDefault();
然后,如果没有给出结果,您应该处理costcentre变为0的可能性。