我有这个表情:
var query = from inventar in _context.Inventar
join inventarsoba in _context.InventarSoba.Where(x => x.SobaId == request.SobaId)
on inventar.InventarId equals inventarsoba.InventarId
select new { inventar, inventarsoba.InventarSobaId };
基本上可以从中获得所有“ Inventar”记录的列表,这些记录的ID也位于“ InventarSoba”表中。最终结果是一个匿名类型的列表,该列表具有一个“ Inventar”类型对象和一个InventarSobaId整数,都在一个元素内。
我基本上是试图将所有这些存储在一个名为InventarModel的类中,该类同时具有要发送回的InventarSobaId和Inventar字段。但是,当我运行此代码时:
List<InventarModel> Lista = new List<InventarModel>();
if (query.Count() > 0)
{
InventarModel obj;
for (int i = 0; i < query.Count(); i++)
{
var obj2 = query.ElementAt(i);
obj = new InventarModel
{
InventarId = obj2.inventar.InventarId,
Naziv = obj2.inventar.Naziv,
SobaId = request.SobaId,
InventarSobaId = obj2.InventarSobaId
};
Lista.Add(obj);
}
}
return Lista;
它表示不支持ElementAt(i),它无法使用ElementAt方法解析值,并且尝试使用[]对其进行索引完全无效。请注意,当我使用“第一”功能时,它与 简而言之,我正在尝试从查询中获取数据并将其全部存储在一个具有列表的类中,我不知道该怎么做。 只要需要,这就是Inventar和InventarModel类的样子: 发明家 InventarModel public partial class Inventar
{
public Inventar()
{
InventarSoba = new HashSet<InventarSoba>();
}
public int InventarId { get; set; }
public string Naziv { get; set; }
public virtual ICollection<InventarSoba> InventarSoba { get; set; }
}
public class InventarModel
{
public int InventarId { get; set; }
public string Naziv { get; set; }
public int SobaId { get; set; }
public int InventarSobaId { get; set; }
}
答案 0 :(得分:1)
List<InventarModel> Lista =
(from inventar in _context.Inventar
join inventarsoba in _context.InventarSoba.Where(x => x.SobaId == request.SobaId)
on inventar.InventarId equals inventarsoba.InventarId
select new InventarModel()
{
//Assign values here from the inventarsoba and inventar
InventarId = inventar.InventarId,
Naziv = inventar.Naziv,
SobaId = request.SobaId,
InventarSobaId = inventarsoba.InventarSobaId
}).ToList();
答案 1 :(得分:0)
谢谢大家,把foreach而不是for做到了。
但是,有人建议我只做一次迭代,然后在末尾添加到列表中,这就像一个符咒,这是我最后的方法:
public override List<InventarModel> Get(InventarSearchRequest request)
{
var query = (from inventar in _context.Inventar
join inventarsoba in _context.InventarSoba.Where(x => x.SobaId == request.SobaId)
on inventar.InventarId equals inventarsoba.InventarId
select new InventarModel()
{
InventarId = inventar.InventarId,
Naziv = inventar.Naziv,
SobaId = request.SobaId,
InventarSobaId = inventarsoba.InventarSobaId
}).ToList();
return query;
}