Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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#_.net_Entity Framework_Linq_Sql Order By - Fatal编程技术网

C# 有没有一种方法可以同时使用LINQ对两个属性进行排序

C# 有没有一种方法可以同时使用LINQ对两个属性进行排序,c#,.net,entity-framework,linq,sql-order-by,C#,.net,Entity Framework,Linq,Sql Order By,我有以下课程: public class MyClass { public DateTime? Date1 { get; set; } public DateTime? Date2 { get; set; } } 此类中的对象始终有一个日期为null,另一个日期为值,例如: var obj1 = new MyClass { Date1 = new DateTime(2020/12/12), Date2 = null }; v

我有以下课程:

public class MyClass
{
        public DateTime? Date1 { get; set; }

        public DateTime? Date2 { get; set; }
}
此类中的对象始终有一个日期为null,另一个日期为值,例如:

var obj1 = new MyClass
{
         Date1 = new DateTime(2020/12/12),
         Date2 = null
};
var obj2 = new MyClass
{
         Date1 = null,
         Date2 = new DateTime(2020/12/8)
};
var obj3 = new MyClass
{
         Date1 = new DateTime(2020/12/24)
         Date2 = null
};
是否有一种方法可以通过这两个属性从数据库上下文获取有序数据?(可能是在执行查询时合并了两列,但我不希望输出包含合并的列)

在这种情况下,查询应给出以下结果:
[obj2、obj1、obj3]

如果需要使用Linq to实体解决上述问题:

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
    public static void Main()
    {
        var obj1 = new MyClass
        {
            Date1 = new DateTime(2020,12,12),
            Date2 = null
        };
        var obj2 = new MyClass
        {
            Date1 = null,
            Date2 = new DateTime(2020,12,8)
        };
        var obj3 = new MyClass
        {
            Date1 = new DateTime(2020,12,2),
            Date2 = null
        };

        List<MyClass> lm = new List<MyClass>();
        lm.Add(obj1);
        lm.Add(obj2);
        lm.Add(obj3);
    
        var ls = lm.OrderBy(l => l.Date1 ?? l.Date2).ToList();
    
        ls.ForEach(s => Console.WriteLine(s.Date1 ?? s.Date2));
    }
}

public class MyClass
{
     public DateTime? Date1 { get; set; }
     public DateTime? Date2 { get; set; }
}

然后在此列上应用
.OrderBy

您不能执行
.OrderBy(x=>x.Date2×x.Date1)
?我觉得英孚应该能够翻译。从我所读到的,EF可以处理null coalesce操作符。假设null合并操作符在EF中不起作用-但是这些都很旧了。如果
??
不起作用,
.OrderBy(x=>x.Date1.HasValue?x.Date1.Value:x.Date2.Value)
大概应该起作用。
OrderBy(x=>x.Date1?x.Date2)
不起作用?它在我的linq to对象测试中起作用
[NotMapped]
public int Date3 { get { return this.Date1??this.Date2; }  }