2014-08-30 69 views
-1

为了使我长话短说,我不得不凑合这个代码一点:如果它的名字从匹配的名称返回一个对象取决于匹配参数

public class Faerie 
{ 
    public string Name; 
} 

public class Example 
{ 
    List<Faerie> faeries = new List<Faerie>() { 
     new Faerie { Name = "Wild Faerie" } , 
    new Faerie { Name = "Smoke Faerie" }, 
    new Faerie { Name = "Red Faerie" } 
    }; 

    string[] faerieNamesFromInput = new string[] { "White Faerie", "Wild Faerie", "Dark Faerie" }; 

    public Faerie ReturnMatchedFromInput() 
    { 

    } 
} 

我怎样才能从仙女列表返回一个童话对象用户输入?比如说,在这里我想返回名为Wild Faerie的Faerie,因为它是名称匹配。是否有一个简短的LINQ方式,或者我必须使用for循环?

+1

你有什么尝试?这是一个非常基本的'Where' /'FirstOrDefault'查询。 – Groo 2014-08-30 07:58:58

+0

这是非常基本的,但说实话,这是我第二次使用LINQ,因为我不使用它设计我的简单游戏,我的知识是在初学者水平 – 2014-08-30 08:00:53

+0

@Groo它只是简单的,如果你知道答案。 – James 2014-08-30 08:03:42

回答

2

如果你想如果你想返回第一匹配然后

faeries.FirstOrDefault(x => faerieNamesFromInput.Contains(x.Name)); 
+0

谢谢!这是我需要的。 – 2014-08-30 08:12:28

0

根本就

var result = faeries.FirstOrDefault(x => faerieNamesFromInput.Contains(x.Name)); 

确保包括System.LINQ返回多个匹配

faeries.Where(x => faerieNamesFromInput.Contains(x.Name)); 

命名空间。