如何使用LINQ中的列表搜索字段的部分部分?

时间:2014-05-08 12:58:15

标签: c# linq list

我有名单中的列表,如

 List<string> PartialOrganism = new List<string>{ "Arabidopsis", "Elsholtzia", "Elymus", "Oryza sativa" };

一个完整的字段, Table.Organism 一些值如:

“Elymus elongatum”  “Oryza sativa(Rice)” “拟南芥”

我怎么能有这样的查询,

Var query =from c in Table where c.Organism.Contains(PartialOrganism) select c;

非常感谢。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,您可能需要一个如下所示的查询:

var query = from c in Table
where PartialOrganism.Any(po => c.Organism.Contains(po))
select c;

这个查询说:如果PartialOrganism包含任何字符串元素是c.Organism的子字符串,请找到Table中的所有记录。

答案 1 :(得分:0)

我认为你正在寻找所有部分生物。您必须在循环中包装查询。

下面的内容,matchOrganisms是你可以附加的对象。

foreach (string organism in PartialOrganisms)
    {
       matchingOrganisms =  (from c in Table where c.Organism.Contains(organism) select c);
    }

这是一个更全面的例子。声明一个列表(这也可以是一个自定义对象列表等。)

List<object> rows = new List<object>();

然后将每个查询的结果添加到列表中:

foreach (string organism in PartialOrganisms)
    {
       rows.AddRange((from c in Table where c.Organism.Contains(organism) select c).ToList());
    }

这将充当或。