سؤال

والدب معي، أنا بدأت: كيف يمكن تحديد عناصر متعددة باستخدام WHERE ... في ... نوع من البند كما هو الحال في

select * from orders where orderid in (1, 4, 5)

وفي LinqToSql؟ أنا لا ترغب أن يكون التعبير امدا لأنها تخيفني. ويرجع الفضل في ذلك مسبقا!

هل كانت مفيدة؟

المحلول

وLINQ و"يحتوي" الذي يشبه "IN" ولكنه أعرب عن العكس - عنصر ليس "في" مجموعة، مجموعة "يحتوي على" عنصر

int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
            where validIds.Contains(order.Id)
            select order

ووأكثر بساطة التعبير عن هذا (IMO) مع امدا على الرغم من:

int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));

وأنا أدرك lambdas هي "جديدة"، وبالتالي مخيفة إلى حد ما، لكنها في الحقيقة تستحق الاستيلاء على عقد من لهم بكلتا يديه. انهم جميل.

نصائح أخرى

int[] arry = new int[] {1,4,5};

var q = from r in orders
        where Array.IndexOf(array, orderid) != -1
        select r;

أو

List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
        where lst.Contains(orderid);
        select r;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top