سؤال

لدي استعلام Linq التي أريد أن أدعو من أماكن متعددة:

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new  {
                            a.Key,
                            a.MyValue
                          };

كيف يمكنني إنشاء طريقة وضع هذا الرمز في ذلك ، ثم نسميها ؟

public  ???  GetSomeData()
{
   // my Linq query
}
هل كانت مفيدة؟

المحلول

IQueryable و IEnumerable العمل على حد سواء.ولكن كنت ترغب في استخدام نوع معين الإصدار ، IQueryable<T> أو IEnumerable <T>.

لذلك سوف تحتاج إلى إنشاء نوع للحفاظ على البيانات.

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new MyType
             {
                 Key = a.Key,
                 Value = a.MyValue
             };

نصائح أخرى

IQueryable

حتى طريقة الإعلان من شأنه أن تبدو وكأنها

public IQueryable GetSomeData()

طريقة عامة ينبغي أن تعطيك التحسس:

public class MyType {Key{get;set;} Value{get;set}}

public IQueryable<T> GetSomeData<T>() where T : MyType, new() 
 { return from a in db.MyTable
          where a.MyValue == "A" 
          select new T {Key=a.Key,Value=a.MyValue};
 }

إذا كنت ترغب في العودة, كنت في حاجة الى نوع.

بدلا من var, تعلن باستخدام IEnumerable<> و يعود هذا المتغير.بالتكرار من خلال ذلك في الواقع ينفذ الاستعلام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top