Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# linq中的条件有序_C#_Linq_Asp.net Core Mvc - Fatal编程技术网

C# linq中的条件有序

C# linq中的条件有序,c#,linq,asp.net-core-mvc,C#,Linq,Asp.net Core Mvc,我有如下的模型 public class LMS_ClassDiscussionListViewModel { public int ReplyCount { get; set; } public LMS_ClassDiscussion ClassDiscussion { get; set; } } public partial class LMS_ClassDiscussion { [Key] public int ClassDiscussionID { g

我有如下的模型

public class LMS_ClassDiscussionListViewModel
{
    public  int ReplyCount { get; set; }
    public LMS_ClassDiscussion ClassDiscussion { get; set; }
}
public partial class LMS_ClassDiscussion
{
    [Key]
    public int ClassDiscussionID { get; set; }
    public int? ParentClassDiscussionID { get; set; }
    public int MessageTypeID { get; set; }
    public int ClassID { get; set; }
    public int DiscussionUserID { get; set; }
    public int NotificationStatusID { get; set; }
    public string Discussion { get; set; }
    public DateTime DiscussionDate { get; set; }
    public bool IsPrivate { get; set; }
    public bool IsRead { get; set; }
    public string DiscussionTitle { get; set; }
}
List<LMS_ClassDiscussionListViewModel> modelList = GetData();
上述视图模型中提到的模型LMS_类讨论如下

public class LMS_ClassDiscussionListViewModel
{
    public  int ReplyCount { get; set; }
    public LMS_ClassDiscussion ClassDiscussion { get; set; }
}
public partial class LMS_ClassDiscussion
{
    [Key]
    public int ClassDiscussionID { get; set; }
    public int? ParentClassDiscussionID { get; set; }
    public int MessageTypeID { get; set; }
    public int ClassID { get; set; }
    public int DiscussionUserID { get; set; }
    public int NotificationStatusID { get; set; }
    public string Discussion { get; set; }
    public DateTime DiscussionDate { get; set; }
    public bool IsPrivate { get; set; }
    public bool IsRead { get; set; }
    public string DiscussionTitle { get; set; }
}
List<LMS_ClassDiscussionListViewModel> modelList = GetData();
我得到的记录列表如下

public class LMS_ClassDiscussionListViewModel
{
    public  int ReplyCount { get; set; }
    public LMS_ClassDiscussion ClassDiscussion { get; set; }
}
public partial class LMS_ClassDiscussion
{
    [Key]
    public int ClassDiscussionID { get; set; }
    public int? ParentClassDiscussionID { get; set; }
    public int MessageTypeID { get; set; }
    public int ClassID { get; set; }
    public int DiscussionUserID { get; set; }
    public int NotificationStatusID { get; set; }
    public string Discussion { get; set; }
    public DateTime DiscussionDate { get; set; }
    public bool IsPrivate { get; set; }
    public bool IsRead { get; set; }
    public string DiscussionTitle { get; set; }
}
List<LMS_ClassDiscussionListViewModel> modelList = GetData();
如何使用
NotificationStatusID=2对该列表进行排序


谢谢

您可以首先选择Id=2的元素,然后使用以下命令将其余元素连接在一起:


您可以首先选择Id为2的元素,然后使用以下命令在末尾连接其余元素:


您要做的是按照
NotificationStatusID
作为主要的排序标准进行排序,这将使一切井然有序。然后,在该顺序中,您可以通过
通知statusid==2
进行排序

您可以编写一个比较器来实现
IComparer
,并将值为2的所有元素放在列表的顶部。然后您可以在
中使用此比较器,排序方式为
(该比较器有一个重载)

如果要保存比较器,请尝试以下操作:

modelList = modelList.OrderBy(x => x.ClassDiscussion.NotificationStatusID == 2 ? Int32.MinValue : x.ClassDiscussion.NotificationStatusID)

这将把值为2的所有元素视为Int32.MinValue,这将把它们移到最上面。

您要做的是按照
NotificationStatusID
作为主要排序标准进行排序,这将使所有事情都井然有序。然后,在该顺序中,您可以通过
通知statusid==2
进行排序

您可以编写一个比较器来实现
IComparer
,并将值为2的所有元素放在列表的顶部。然后您可以在
中使用此比较器,排序方式为
(该比较器有一个重载)

如果要保存比较器,请尝试以下操作:

modelList = modelList.OrderBy(x => x.ClassDiscussion.NotificationStatusID == 2 ? Int32.MinValue : x.ClassDiscussion.NotificationStatusID)

这将把值为2的所有元素视为Int32.MinValue,这将把它们移到最上面。

假设没有负数,您可以执行
.OrderBy(m=>m.ClassDiscussion.NotificationStatusID==2?-1:m.ClassDiscussion.NotificationStatusID)
。这样,您只需遍历列表一次

假设没有否定词,您只需执行
.OrderBy(m=>m.ClassDiscussion.NotificationStatusID==2?-1:m.ClassDiscussion.NotificationStatusID)
。这样,您只需遍历列表一次

您可以使用concat(id为2的项目列表)您可以使用concat(id为2的项目列表)谢谢您的帮助!谢谢你的帮助!谢谢你的帮助!谢谢你的帮助!谢谢你的帮助!谢谢你的帮助!