如何使用外键最简单的方式使用orderby()?

时间:2016-04-09 10:22:03

标签: asp.net-mvc entity-framework linq

它想要对一个集合进行排序并使用它的外键。我有一个1:0 ... 1的关系,并在我的MVC应用程序中显示它。

OutreachSet ==> 0:0 ... 1 ==> MotivationSet

    public class OutreachSet
        {
            [Key]
            [Display(Name = "Target Contact")]
            public string TargetContact { get; set; }
            public virtual MotivationSet MotivationSet { get; set; }
         }


public class MotivationSet
    {
        [Key, ForeignKey("OutreachSet")]
        [Display(Name = "Target Contact")]
        public string Name { get; set; }

 [Required]
        public virtual OutreachSet OutreachSet { get; set; }
  }

var motivations = db.Motivations.Include(m => m.OutreachSet);
var result = motivations.Select(s => s.OutreachSet).OrderByDescending(s => s.TargetContact);

就在这里,我得到了OutreachSet的内容,但不是我想用作oderby标准的TargetContact。这是使用context.Entry

进行此操作的最佳方式

我遇到的另一个问题是,在查看Quickwatch OutreachSet和MotivationSet时,请继续无限地引用它们。

如果我使用例如这样:

var test = db.Entry(db.Motivations.First()).Entity.OutreachSet.TargetContact;

然后我无法弄清楚如何对它进行排序。

1 个答案:

答案 0 :(得分:1)

目前还不太清楚你想要实现的目标,所以假设你想得到一个按相关OutreachSet MotivationSet排序的TargetContract集合。

有几种方法可以做到这一点,但最简单的方法就是在查询中交换selectorder by子句:

var result = motivations.OrderByDescending(s => s.TargetContact).Select(s => s.OutreachSet);