2012-01-13 5 views
2

商品名と価格に2つのオプション、昇順または降順の2つのフィールドがあります。Linq orderbyで "if"を実行する方法は?

ユーザーは、2つのチェックボックスをオンにするかオフにするか、昇順にチェックボックスをオンまたはオフにすることで、並べ替え順序を指定できます。

上記の2つのチェックボックスの設定に基づいてソート順が動的に設定されている場合、orderby句をコーディングするにはどうすればよいですか?ありがとう。

答えて

6

あなたは条件付きでOrderBy句を指定することでクエリを作成することができます

var query = from product in db.Products select product; 

if(price.Checked && ascending.Checked) 
{ 
    query = query.OrderBy(product => product.Price); 
} 
else if(price.Checked && !ascending.Checked) 
{ 
    query = query.OrderByDescending(product => product.Price); 
} 
else if(!price.Checked && ascending.Checked) 
{ 
    query = query.OrderBy(product => product.Name); 
} 
else 
{ 
    query = query.OrderByDescending(product => product.Name); 
} 
2

以下ascendingConditionがあなたのコードに基づいていることに注意してください

if(ascendingCondition) 
{ 
    ProductCollection.OrderBy(p => p.Name).ThenBy(p => p.Price) 
} 
else 
{ 
    ProductCollection.OrderByDescending(p => p.Name).ThenByDescending(p => p.Price) 
} 
関連する問題