در مقاله قبل ، ۸ مثال از مبحث sorting در linq را بررسی کردیم . در این مقاله ۳ مثال دیگر در این رابطه خواهیم دید . که نحوه پیاده سازی چند orderby پشت سرهم را بررسی می کنیم . برای اعمال چند orderBy ، باید از دستور thenBy استفاده شود یعنی در اولین عبارت مانند قبل از orderBy استفاده میکنیم و از ordering دوم به بعد از دستور ThenBy استفاده میکنیم . به مثالهای زیر دقت کنید :
مثال نهم :
در این مثال میخواهیم لیست محصولات را ابتدا براساس حروف الفبای دسته بندی (category) محصول و سپس بر اساس قیمت و بصورت نزولی مرتب سازی انجام شود :
public static void ThenByDescendingSimple()
{
var products = new ProductRepository().GetAll();
var sortedProducts =
from product in products
orderby product.Category, product.UnitPrice descending
select product;
foreach (var product in sortedProducts)
{
Console.WriteLine("Name: {0}\tCategory: {1}\tUnit Price: {2}", product.ProductName, product.Category, product.UnitPrice);
}
}
مثال دهم :
برای اعمال مرتب سازی نزولی برای thenby ها (ordering دوم به بعد) باید از عبارت thenbydescending استفاده کنیم :
public static void ThenByDescendingComparer()
{
string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
var sortedWords =
words.OrderBy(word => word.Length)
.ThenByDescending(a => a, new CaseInsensitiveComparer());
foreach (var word in sortedWords)
{
Console.WriteLine(word);
}
}
دستور Reverse :
برای برعکس کردن نتایج بدست آمده از پرس و جوی Linq بکار میرود . بعنوان مثال اگر خروجی بصورت ۱و۴و۶ باشد با اعمال Reverse ، خروجی بصورت ۶و۴و۱ می شود . به مثال زیر دقت کنید :
مثال یازدهم :
به کد زیر دقت کنید :
public static void Reverse()
{
string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
var reversedIDigits = (
from digit in digits
where digit[1] == 'i'
select digit
).Reverse();
Console.WriteLine("A backwards list of the digits with a second character of 'i':\n———————————————-");
foreach (var digit in reversedIDigits)
{
Console.WriteLine(digit);
}
}
توضیح : در این مثال می خواهیم از آرایه digits ، عناصری که حرف دوم آنها i می باشد را برداریم و در نهایت آنها را Reverse کنیم . خروجی مثال فوق nine,eight,six می شود .
خب دوستان ، هم اکنون مقالات آموزشی در زمینه مرتب سازی و یا ordering یا sorting در LINQ به پایان میرسد .
برای کسب اطلاعات و آموزش بیشتر به وب سایت مایکروسافت مراجعه کنید .
در بخش بعدی وارد مبحث عملگرهای مجموعه ای در LINQ خواهیم شد .
دیدگاهها :