-1

テーブルからレコードのリストを取得していますが、正常に動作していますが、 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
{

};

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

ここに解決策があります

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();
}
4

3 に答える 3

0

これがその解決策です。

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();
}
于 2012-10-17T14:45:06.133 に答える
0

あなたの質問は明確ではありません。order変数の値が "NearExpire" になったときだけ order by を追加したいと思います。

以下を試してください。

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

降順が必要な場合は、次を使用できます。

return DB.Item.OrderByDescending(e=>e.ExpiryDate).ToList(); 
于 2012-10-12T10:00:24.937 に答える
0

あなたの質問は不明確ですが、これはあなたにアイデアを与えるかもしれません: もしあなたがこのようなクラスを持っているなら

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 });

次に、次のようなクエリを使用できます。

        var Item = (from itm in Items
                    where itm.Order == "NearExpire"
                    orderby itm.ExpiryDate ascending
                    select itm).ToList();

3 番目に追加されたオブジェクトは、1 番目に追加されたオブジェクトよりも有効期限が過ぎていますが、結果として昇順に並べられていることに注意してください。

于 2012-10-12T10:36:36.370 に答える