تحويل أنواع بيانات
أساليب التحويل تغير نوع كائنات الإدخال.
عمليات التحويل في استعلامات LINQ مفيدة في العديد من التطبيقات. فيما يلي بعض الأمثلة:
الأسلوب Enumerable.AsEnumerable<TSource> يمكن استخدامه لإخفاء تطبيق مخصص لنوع مشغل الاستعلامات القياسي.
الأسلوب Enumerable.OfType<TResult> يمكن استخدامه لتمكين مجموعات ليست ذات معلمات لاستعلامات LINQ.
أساليب Enumerable.ToArray<TSource>, Enumerable.ToDictionary, Enumerable.ToList<TSource>، و Enumerable.ToLookup يمكن استخدامها لفرض تنفيذ استعلام فوري بدلاً من تأجيله حتى يتم تعداد الاستعلام.
الأساليب
يسرد جدول التالي أساليب مشغل الاستعلامات القياسي الذي ينفذ عمليات تحويل نوع بيانات.
أساليب التحويل في هذا الجدول التي تبدأ أسماؤها مع "As" تغير النوع الثابت للمجموعة ولكن لاتقوم بتعدادها. الأساليب ذات الأسماء التي تبدأ بـ"To" يقوم بتعداد مجموعة وتضع العناصر في نوع المجموعة المطابقة.
اسم الأسلوب |
الوصف |
تعبير استعلام بناء جمل #C |
تعبير استعلام Visual Basicلبناء جمل #C |
معلومات إضافية |
---|---|---|---|---|
AsEnumerable |
تقوم بإرجاع الإدخال الذي تم تحديد نوعه كـ IEnumerable<T>. |
غير متوفر. |
غير متوفر. |
|
AsQueryable |
تقوم بتحويل IEnumerable (عام) إلى IQueryable (عام). |
غير متوفر. |
غير متوفر. |
|
Cast |
تحول عناصر المجموعة إلى نوع محدد. |
استخدم متغير نطاق محدد النوع بشكل صريح. فعلى سبيل المثال: from string str in words |
From … As … |
|
OfType |
تقوم بتصفية القيم اعتماداً على القدرة على تحويله إلى نوع محدد. |
غير متوفر. |
غير متوفر. |
|
toArray |
تحول مجموعة إلى صفيف. تفرض هذه الطريقة تنفيذ الاستعلام. |
غير متوفر. |
غير متوفر. |
|
ToDictionary |
يضع العناصر في Dictionary<TKey, TValue> مستند على وظيفة محدد المفتاح. تفرض هذه الطريقة تنفيذ الاستعلام. |
غير متوفر. |
غير متوفر. |
|
toList |
تحول مجموعة إلى List<T>. تفرض هذه الطريقة تنفيذ الاستعلام. |
غير متوفر. |
غير متوفر. |
|
ToLookup |
تضع عناصر في Lookup<TKey, TElement> (في اتجاه واحد-إلى-أكثر) مستندة إلى دالة محدد المفتاح. تفرض هذه الطريقة تنفيذ الاستعلام. |
غير متوفر. |
غير متوفر. |
مثال بناء جملة تعبير استعلام
يستخدم مثال التعليمات البرمجية التالي متغير نطاق محدد النوع بوضوح في #C أو بند From As في Visual Basic لتحويل نوع إلى نوع فرعي قبل الوصول إلى عضو متوفر فقط للنوع الفرعي.
Class Plant
Public Property Name As String
End Class
Class CarnivorousPlant
Inherits Plant
Public Property TrapType As String
End Class
Sub Cast()
Dim plants() As Plant = {
New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"},
New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"},
New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"},
New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}
Dim query = From plant As CarnivorousPlant In plants
Where plant.TrapType = "Snap Trap"
Select plant
Dim sb As New System.Text.StringBuilder()
For Each plant In query
sb.AppendLine(plant.Name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Venus Fly Trap
' Waterwheel Plant
End Sub
class Plant
{
public string Name { get; set; }
}
class CarnivorousPlant : Plant
{
public string TrapType { get; set; }
}
static void Cast()
{
Plant[] plants = new Plant[] {
new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
};
var query = from CarnivorousPlant cPlant in plants
where cPlant.TrapType == "Snap Trap"
select cPlant;
foreach (Plant plant in query)
Console.WriteLine(plant.Name);
/* This code produces the following output:
Venus Fly Trap
Waterwheel Plant
*/
}
مزيد حول كيفية القيام بتحويل أنواع بيانات
Topic | Location |
---|---|
كيفية القيام بما يلي: استعلام ArrayList مع LINQ | dv_Linq |