我对lambda的查询有个小问题。
我有两张桌子:存货和物品。另外,我还创建了一个我想要展示的部件列表。
public class SteelSheet
{
public string Part { get; set; }
public float Quantity { get; set; }
}var sheetTest = _context.Inventories.Include(x => x.Article)......;文章包括领域部分。我想要显示的数据,从库存和文章,其中只包含部分从steelSheet列表。
编辑:
public class Inventory
{
public int ID { get; set; }
public int Stock { get; set; }
public int ArticleID { get; set; }
public Article Article { get; set; }
} public class Article
{
public int ID { get; set; }
public string Part { get; set; }
public float Price { get; set; }
public ICollection<Inventory> Inventory { get; set; }
}steelSheet.Add(new SteelSheet() { Part = "PART0001", Quantity = "8" });
steelSheet.Add(new SteelSheet() { Part = "PART0002", Quantity = "3" });SteelSheet是我想要显示的部件列表(我使用另一个函数来概括这个列表),但我也希望从商品和库存中看到价格。
发布于 2022-10-28 11:56:44
从您的问题来看,似乎没有必要将查询建立在Inventory之上。这篇文章与零件编号相匹配,每一篇文章都包含一个相关库存的列表。
简单的查询将是
var parts = steelSheet.Select(s => s.Part).ToArray();
var matchingArticles = _context.Articles
.Where(a => parts.Contains(a.Part))
[.Select(a => [projection]]
[.ToList()/.ToArray()];只有在使用急切加载的情况下,才需要像.Include(a => a.Inventory)这样的东西。阅读这篇文章。
https://stackoverflow.com/questions/74233427
复制相似问题