在此我编写了两个 linq 查询
我已经用一种方法做到了这一点,如果存在的话,你们可以建议我另一种获取知识的方法吗?
这是代码
// Specify the data source.
int [] scores = [79,92,98,2];
// Define the query expression for ascending order.
IEnumerable<int> scoreQuery = from score in scores orderby score ascending select score;
// Define the query expression for descending order.
var scoreQueryDesc = from score in scores orderby score descending select score;
// Execute the ascending query
foreach (var i in scoreQuery)
{
Console.Write(i + " ");
}
// This Console is for Next line.
Console.WriteLine();
// Execute the descending query
foreach (var i in scoreQueryDesc)
{
Console.Write(i + " ");
}
在上面的代码中我定义了两种类型的值
请建议我还有其他方法可以做到这一点
如果您想有条件地升序或降序排序,您可以使用此扩展:
public static IOrderedEnumerable<TSource> OrderByWithDirection<TSource, TKey>(
this IEnumerable<TSource> sequence,
Func<TSource, TKey> keySelector,
bool descending)
{
return descending
? sequence.OrderByDescending(keySelector)
: sequence.OrderBy(keySelector);
}
那么你的代码就变得简单了:
bool descending = true; // can be set at runtime
IEnumerable<int> scoreQuery = scores.OrderByWithDirection(i => i, descending);