Asp.net mvc 4 Linq-如何创建包含在另一个表中的类别列表

Asp.net mvc 4 Linq-如何创建包含在另一个表中的类别列表,asp.net-mvc-4,linq-to-entities,entity-framework-5,Asp.net Mvc 4,Linq To Entities,Entity Framework 5,我试图从类别列表中进行选择,其中它与使用linq的项目列表的类别类型相匹配。即,从所有FIGstationeryCategories的列表中,仅选择FiGStationeryType具有已筛选列表中匹配类别的类别。下面列出了这些模型 public class FIGstationeryType { public int Id { get; set; } public virtual FIGstationeryCategory Category { get; set; }

我试图从类别列表中进行选择,其中它与使用linq的项目列表的类别类型相匹配。即,从所有FIGstationeryCategories的列表中,仅选择FiGStationeryType具有已筛选列表中匹配类别的类别。下面列出了这些模型

public class FIGstationeryType
{
    public int Id { get; set; }
    public virtual FIGstationeryCategory Category { get; set; }
    public virtual FIGcompany Company { get; set; }
    public decimal Height { get; set; }
    public decimal Width { get; set; }
    public virtual FIGstationeryType Template { get; set; }
    public bool DoubleSided { get; set; }
}

 public class FIGstationeryCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal MaxZoom { get; set; }
    public ICollection<FIGstationeryType> StationeryItems { get; set; }
}

任何帮助都将不胜感激。

我不完全确定您希望如何选择您的类别,但这可能有点帮助:

var categoryList = db.StationeryCategories
   .*Select*(x => listOfItems.Where(y => y.Category == x)
   .FirstOrDefault());

你能澄清一下这是否是你所追求的标准吗?

我不完全确定你想如何选择你的类别,但这可能有点道理:

var categoryList = db.StationeryCategories
   .*Select*(x => listOfItems.Where(y => y.Category == x)
   .FirstOrDefault());
var listOfCategories = 
(from o in listOfItems select o.Category.Name).Distinct().ToList();
你能澄清一下这是否是你所追求的标准吗

var listOfCategories = 
(from o in listOfItems select o.Category.Name).Distinct().ToList();
当我想到这一点时(昨晚看了3个小时的linq视频后),我意识到ListoItems已经包含了使用中的所有类别,因此我不需要查询和比较这两个表,只需从我已经拥有的列表中提取相关值


当我想到这一点时(昨晚看了3个小时的linq视频后),我意识到ListoItems已经包含了使用中的所有类别,因此我不需要查询和比较这两个表,只需从我已有的列表中提取相关值。

仅当ListoItems列表中至少有一项包含与该行相等的信纸值时,从db.stationerycategories表行中选择。(我希望这更有意义)我尝试了你的代码,并得到了一个无法将方法组where转换为非委托类型bool错误。很抱歉,我没有要测试的vs环境,但我认为你需要一个
选择
(或者可能
选择多个
)而不是开始时的
where
。也许其他人会在这里查看并更正我的linq,使其按照您指定的方式工作,但我将在稍后有IDE进行测试时回顾。感谢您抽出时间查看我的问题。我自己的回答是:var listOfCategories=(从listOfItems中的o选择o.Category.Name);您的选择是正确的。仅当ListoItems列表中至少有一项包含与该行相等的信纸值时,才从db.stationerycategories表行中选择。(我希望这更有意义)我尝试了你的代码,并得到了一个无法将方法组where转换为非委托类型bool错误。很抱歉,我没有要测试的vs环境,但我认为你需要一个
选择
(或者可能
选择多个
)而不是开始时的
where
。也许其他人会在这里查看并更正我的linq,使其按照您指定的方式工作,但我将在稍后有IDE进行测试时回顾。感谢您抽出时间查看我的问题。我自己的回答是:var listOfCategories=(从listOfItems中的o选择o.Category.Name);你的选择是对的。呵呵,有时候在显而易见的事情变得明显之前,你需要用大量的头撞硬墙。呵呵,有时候在显而易见的事情变得明显之前,你需要用大量的头撞硬墙。