如何使用LINQ编写ContainsAll查询? (C#LINQ-TO-SQL)

时间:2009-05-18 19:15:06

标签: c# .net linq-to-sql

假设我有以下

var mustHave = new int [] { 1, 2 }

和一个名为db.Numbers的表

public class Number
{
     public int id;
     public int number;
}

填充

Numbers.add(new Number(){id=8,number=1});
Numbers.add(new Number(){id=8,number=2});
Numbers.add(new Number(){id=8,number=3});
Numbers.add(new Number(){id=9,number=1});
Numbers.add(new Number(){id=9,number=3});

我希望获得与mustHave变量中的所有数字相关联的所有ID。例如,查询必须返回id = 8但不返回id = 9。真实案例要复杂得多,并使用Linq-To-Sql对数据库进行查询。

2 个答案:

答案 0 :(得分:-1)

试试这个:

var numbers = Numbers.FindAll(n=>n.id=8);
var mustHave= new int[numbers.Count][2];
int counter = 0;`
foreach(var number in numbers)
{
    mustHave[counter][0]=number.id;
    mustHave[counter][1]=number.number;
    counter++;
 }

答案 1 :(得分:-1)

如果您正在使用DataContext在LINQtoSQL中执行某些操作,请尝试以下操作:

var mustHave = new int [] { 1, 2 };
var items = 
  from x in DataContext.SomeTable
  where mustHave.Contains(x.SomeProperty)
  select x;