public class Test
{
int i;
string s;
}
List<Test> testList = new List<Test>(); //assume there are some values in it.
List<int> intList = new List<int>(){ 1,2,3};
如何使用linq对象来获取items from testList where i is in intList
。
类似于List<Test> testIntList = testList.Where(t=>t.i in intList)
答案 0 :(得分:7)
从技术上讲,它将是:
List<Test> testIntList = testList.Where(t => intList.Contains(t.i)).ToList();
但是,如果intList
很大,那可能会很慢,因为List<T>.Contains
在O(n)中执行搜索。更快的方法是使用HashSet<T>
:
HashSet<int> intList = new HashSet<int>(){ 1,2,3 };
答案 1 :(得分:2)
这也很有意思并且表现良好:
List<test> finalList = testList.Join(intList,
test => test.id,
i => i,
(t, i) => t).ToList();
您知道何时在SQL SELECT
中连接表?这是使用Linq to Objects进行的。