C# 需要在实体框架中选择多个列,但只需要在单个列上获得不同
我有一个包含以下记录的数据库表。有比我在下面显示的更多的字段,但我只想返回所有者、品牌名称、ID和类型字段C# 需要在实体框架中选择多个列,但只需要在单个列上获得不同,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,我有一个包含以下记录的数据库表。有比我在下面显示的更多的字段,但我只想返回所有者、品牌名称、ID和类型字段 Owner Ingredient BrandName ID# Type XXX Methoprene Precor 123-333 H XXX Permethrin Precor 123-333 H 我正在尝试编写一个实体框架查询,以仅选择Brand
Owner Ingredient BrandName ID# Type
XXX Methoprene Precor 123-333 H
XXX Permethrin Precor 123-333 H
我正在尝试编写一个实体框架查询,以仅选择Brand Name字段中的不同记录,但仍将列表中的其他列返回给控制器以在局部视图中显示。以下是我尝试过的代码,但我似乎无法正确编写查询:
return db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.GroupBy(c => c.Owner, c =>c.BrandName )
.Select(d => d.FirstOrDefault())
.ToList();
我意识到Select子句不正确,但需要帮助获得正确的语法以返回4个特定字段。我希望查询返回以下记录:
XXX Precor 123-333 H
提前感谢……我相信这就是您想要的
var record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new { c.Owner, c.BrandName, c.ID, c.Type })
.FirstOrDefault();
如果要从结果返回此值,则需要将其投影到已知类型
PesticideModel record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new PesticideModel{ Owner = c.Owner, BrandName = c.BrandName, ID = c.ID, Type = c.Type })
.FirstOrDefault();
杀虫剂模型
如果要返回包含单个记录的列表,请执行以下操作:
List<PesticideModel> record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new PesticideModel{ Owner = c.Owner, BrandName = c.BrandName, ID = c.ID, Type = c.Type })
.Take(1) // take 1st record
.ToList();
我相信这就是你要找的
var record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new { c.Owner, c.BrandName, c.ID, c.Type })
.FirstOrDefault();
如果要从结果返回此值,则需要将其投影到已知类型
PesticideModel record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new PesticideModel{ Owner = c.Owner, BrandName = c.BrandName, ID = c.ID, Type = c.Type })
.FirstOrDefault();
杀虫剂模型
如果要返回包含单个记录的列表,请执行以下操作:
List<PesticideModel> record = db.Pesticides
.Where(c => c.Owner == Owner && c.BrandName == PesticidesBrand)
.Select(c => new PesticideModel{ Owner = c.Owner, BrandName = c.BrandName, ID = c.ID, Type = c.Type })
.Take(1) // take 1st record
.ToList();
我是EF的新手,所以我很难掌握正确的语法。告诉我无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic”。List@stuartm-见更新。我重读了你的问题,似乎你想要第一张带有特定字段集的记录。这让我比以前走得更远。请原谅我的经验不足,但我的控制员希望能返回一份清单。我需要做什么才能将其作为列表返回?@stuartm-你的问题是需要一条包含4个字段的记录。我希望查询返回以下记录。您想将这一条记录作为列表返回,还是根据查询返回的内容需要其他记录?将这一条记录作为列表返回。我对EF非常陌生,因此我很难掌握正确的语法。告诉我无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic”。List@stuartm-见更新。我重读了你的问题,似乎你想要第一张带有特定字段集的记录。这让我比以前走得更远。请原谅我的经验不足,但我的控制员希望能返回一份清单。我需要做什么才能将其作为列表返回?@stuartm-你的问题是需要一条包含4个字段的记录。我希望查询返回以下记录。您想将这一条记录作为列表返回,还是根据查询返回的内容需要其他记录?请将这一条记录作为列表返回。如果您指出发布的解决方案的哪一部分是必需的,并简要解释原因,我们将不胜感激。只有代码的答案对未来的读者来说没有多大价值。如果您指出所发布的解决方案的哪一部分是必要的,并简要说明原因,我们将不胜感激。只有代码的答案对未来的读者没有什么价值。请参阅。请参阅。