【问题标题】:WPF ComboBox with entity framework orderBy带有实体框架 orderBy 的 WPF ComboBox
【发布时间】:2012-08-22 11:29:12
【问题描述】:

我像这样在我的项目中填充了 ComboBox

            CB_City.ItemsSource = c.Cities;
            CB_City.DisplayMemberPath = "city1";
            CB_City.SelectedValuePath = "city_id";
            CB_City.SelectedValue = 517;

我使用实体框架和 c# , 如何按升序对结果进行排序?

还是不行(我尝试了很多)我附上完整的代码

           using (MorEntities1  c = new MorEntities1())
        {
            CB_City.ItemsSource = c.Cities;
            CB_City.DisplayMemberPath = "city1";
            CB_City.SelectedValuePath = "city_id";
            CB_City.SelectedValue = 517;
        } 

【问题讨论】:

  • 为什么你不能只做c.Cities.OrderBy(c => c.Name)或类似的事情?
  • 我不知道为什么,但它不起作用。我正在研究 WPF,抱歉我忘了写
  • 什么是 c.Cities?给我们一个类型声明。

标签: c# sql wpf


【解决方案1】:

除了@Ross 的帖子,您还可以通过这种方式获得CollectionViewSource

var view = CollectionViewSource.GetDefaultView(CB_City.ItemsSource);
view.SortDescriptions.Add(new SortDescription("city1", 
    ListSortDirection.Ascending));

【讨论】:

  • 非常感谢,效果很好,抱歉耽搁了谢谢
【解决方案2】:

您可以使用:CB_City.ItemsSource = c.Cities.OrderBy(c=>c.Text)CB_City.ItemsSource = c.Cities.OrderBy(c=>c.Text)

【讨论】:

    【解决方案3】:

    另一种选择是使用CollectionViewSourceSortDescription

    var myViewSource = new CollectionViewSource { Source = c.Cities.ToList() };
    myViewSource.SortDescriptions.Add(
      new SortDescription("YOUR_PROPERTY", ListSortDirection.Ascending)
    );
    CB_City.ItemsSource = myViewSource.View;
    

    【讨论】:

    • +1。我会在任何一天去CollectionViewSource,而不是ItemsSource的排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    相关资源
    最近更新 更多