Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对联接表结果进行排序?_C#_.net_Asp.net_Asp.net Mvc 3_Sql Order By - Fatal编程技术网

C# 如何对联接表结果进行排序?

C# 如何对联接表结果进行排序?,c#,.net,asp.net,asp.net-mvc-3,sql-order-by,C#,.net,Asp.net,Asp.net Mvc 3,Sql Order By,我的模型: namespace Music.Models { public class Album { public int AlbumID { get; set; } public virtual ICollection<Song> Songs { get; set; } } } namespace Music.Models { public class Song { public int S

我的模型:

namespace Music.Models
{
    public class Album
    {
        public int AlbumID { get; set; }
        public virtual ICollection<Song> Songs { get; set; }
    }
}

namespace Music.Models
{
    public class Song
    {
        public int SongID { get; set; }
        public int AlbumID { get; set; }
        public int TrackNumber { get; set; }
        public virtual Album Album { get; set; }
    }
}
但它不起作用。我觉得自己很愚蠢,因为现在我可以在网上找到它,但却不能


任何帮助都将不胜感激。

在linq中,您通常必须分配运算符的结果,如:

album.Songs = album.Songs.OrderBy(s => s.TrackNumber);

OrderBy
创建一个新的orderred集合;它不会覆盖原始数据,除非您告诉它。

您调用了
OrderBy
,但返回的有序可枚举数据“丢失”

您可以在
相册
类中添加一个getter,返回已排序的曲目

public class Album
{
    public int AlbumID { get; set; }
    public virtual ICollection<Song> Songs { get; set; }
    public IOrderedEnumerable<Song> SortedSongs {
        get { return Songs.OrderBy(s => s.TrackNumber); }
    }
}
公共类相册
{
public int AlbumID{get;set;}
公共虚拟ICollection歌曲{get;set;}
公共或可数分类歌曲{
获取{return Songs.OrderBy(s=>s.TrackNumber);}
}
}

如果生成了模型类,则可以在分部类中使用此getter。

它不需要转换为
ICollection
?思想
IOrderedEnumerable
只继承了
IEnumerable
。谢谢,这似乎是一个不错的选择。
public class Album
{
    public int AlbumID { get; set; }
    public virtual ICollection<Song> Songs { get; set; }
    public IOrderedEnumerable<Song> SortedSongs {
        get { return Songs.OrderBy(s => s.TrackNumber); }
    }
}