说我有,
List<ExampleType> example;
在某个地方,我们已经填充了10个ExampleType的对象。
ExampleType如下所示:
class ExampleType
{
public string ID;
public string name;
//etc.
//Some other members..
}
现在,我将如何浏览列表example
,并仅查询名称为ExampleType
的{{1}}个对象彼得并将其存储在另一个列表中,例如:
List<ExampleType> peterExamples = example. //some query functionality that I can't find
我试过了example.AsQueryable
。但无法让它发挥作用。我怀疑我需要一些LINQ来查询列表吗?
答案 0 :(得分:3)
您可以使用ExampleType
获取所有name == "Peter"
个元素:
var peterExamples = example.Where(e => e.name == "Peter");
这将返回IEnumerable
,如果您需要List
,可以通过拨打ToList()
将其转换为一个。{/ p>
var peterList = peterExamples.ToList();
答案 1 :(得分:2)
这样就可以了解
var peterList = example.Where(x => x.name == "Peter").ToList();
在这种情况下,列表仅为ExampleType
,因此不需要仅查询ExampleType
。如果您遇到List<object>
,但只需要在ExampleType
上运行,那么您可以执行以下操作
var peterList = example
.OfType<ExampleType>()
.Where(x => x.name == "Peter")
.ToList();
答案 2 :(得分:1)
peterExamples.Where(p=>p.name== "Peter").ToList()
peterExamples.Where(p=>p.name.Contains("Peter")).ToList();//to search for LIKE '%Peter%'
答案 3 :(得分:1)
你可以这样做:
List<ExampleType> peterExamples = example.Where(t=>t.name == "Peter").ToList();
或者您可以使用查询语法:
List<ExampleType> peterExamples = (
from item in example
where item.name == "peter"
select item ).ToList();
答案 4 :(得分:0)
LINQ (Enumerable) extension methods可用于任何IEnumerable<T>
(IQueryable<T>
是IEnumerable<T>
的子类型),其中包含List<T>
。
如果intellisense“不工作”,或者存在诸如“Where / AsQueryable未被识别为...方法”之类的错误,则代码需要导入扩展方法(例如using System.Linq
)以便可用。
有关更多用法和信息,请参阅LINQ (Language-Integrated Query)。
答案 5 :(得分:0)
您还必须使用此using语句才能使Linq查询生效。
using System.Linq;
答案 6 :(得分:0)
以下是使用List<T>
FindAll
方法的无LINQ的解决方案:
var peterExamples = example.FindAll(item => item.name == "Peter");