如何“查询”List <t> </t>

时间:2014-02-04 00:26:50

标签: c# linq list

说我有,

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来查询列表吗?

7 个答案:

答案 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");