كيفية القيام أين ... في ... بند في ينق إلى SQL؟
-
11-07-2019 - |
سؤال
والدب معي، أنا بدأت: كيف يمكن تحديد عناصر متعددة باستخدام 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;
لا تنتمي إلى StackOverflow