C# OrderBy带有linq和return ToList()的日期字段

C# OrderBy带有linq和return ToList()的日期字段,c#,linq,C#,Linq,我正在从表中获取一个记录列表,它工作正常,但是当我使用orderby时,如果我像这样使用代码,它会显示一个错误,它工作正常: var Item = from itm in DB.Items orderby itm.ExpiryDate ascending select new Item { }; return Item.ToList(); 上面的工作很好,但我有一个条件,所以我需要使用下面给出一个错误 var Item = from itm in DB.Items select new It

我正在从表中获取一个记录列表,它工作正常,但是当我使用orderby时,如果我像这样使用代码,它会显示一个错误,它工作正常:

var Item = from itm in DB.Items
orderby itm.ExpiryDate ascending
select new Item
{

};
return Item.ToList();
上面的工作很好,但我有一个条件,所以我需要使用下面给出一个错误

var Item = from itm in DB.Items
select new Item
{
})

这是解决办法

var Item = (from itm in DB.Items
select new Item
{

}).ToList();

if (Order == "NearExpire")
{
return Item.OrderBy(e=>e.ExpiryDate).ToList();
}
else
{
return Item.ToList();
}

你的问题不清楚。我认为只有当
order
变量值变为“NearExpire”时,才需要添加orderby

尝试以下方法

if (Order == "NearExpire")
{ 
    return DB.Item.OrderBy(e=>e.ExpiryDate).ToList(); 
}else
{
   return DB.Item.ToList(); 
}
return DB.Item.OrderByDescending(e=>e.ExpiryDate).ToList(); 
如果您想要降序,您可以使用以下命令

if (Order == "NearExpire")
{ 
    return DB.Item.OrderBy(e=>e.ExpiryDate).ToList(); 
}else
{
   return DB.Item.ToList(); 
}
return DB.Item.OrderByDescending(e=>e.ExpiryDate).ToList(); 

您的问题不清楚,但这可能会给您一个想法: 如果你有这样的课

class Item
{
    private string m_Order;
    private DateTime m_ExpiryDate;

    public string Order
    {
        get { return m_Order; }
        set { m_Order = value; }
    }

    public DateTime ExpiryDate
    {
        get { return m_ExpiryDate; }
        set { m_ExpiryDate = value; }
    }

}
这是你收集的数据

        var Items = new List<Item>();
        Items.Add(new Item() { Order = "NearExpire", ExpiryDate = DateTime.Now.AddDays(4) });
        Items.Add(new Item() { Order = "FutureExpire", ExpiryDate = DateTime.Now.AddDays(15) });
        Items.Add(new Item() { Order = "NearExpire", ExpiryDate = DateTime.Now.AddDays(3) });
        Items.Add(new Item() { Order = "Expire", ExpiryDate = DateTime.Now });

请注意,添加到第3个位置的对象比添加到第1个位置的对象有一个过期日期,但结果是,它们是按升序排列的。

以下是解决方案

var Item = (from itm in DB.Items
select new Item
{

}).ToList();

if (Order == "NearExpire")
{
return Item.OrderBy(e=>e.ExpiryDate).ToList();
}
else
{
return Item.ToList();
}

您得到的错误是什么?您可以在查询的where子句中添加条件。不确定您在问什么感谢问题通过
select new Item select{}.ToList()解决了;return Item.OrderBy(e=>e.ExpiryDate.ToList()