【问题标题】:Return an object depending on matching parameter [duplicate]根据匹配参数返回一个对象[重复]
【发布时间】:2014-08-30 16:05:03
【问题描述】:

为了长话短说,我不得不对这段代码进行一些即兴创作:

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()
    {

    }
}

如果它的名称与用户输入的名称匹配,我如何从精灵列表中返回一个 Fairy 对象?例如,在这里我想返回名称为 Wild Faerie 的 Faerie,因为它的名称匹配。是否有一个简短的 LINQ 方法或者我必须使用 for 循环?

【问题讨论】:

  • 你试过什么?这是一个非常基本的Where/FirstOrDefault 查询。
  • 这是非常基本的,但老实说这是我第二次想使用 LINQ,因为我不使用它来设计我的简单游戏,而且我对它的了解还处于初学者水平跨度>
  • @Groo 只有知道答案才简单。
  • @James:当然,但是谷歌搜索也很简单。这个问题已经被问过并回答了几十次。 很简单。因此,“你尝试过什么”的问题。我通过谷歌搜索“linq find item from another list”或“linq find string in list”获得的不同线程数是荒谬的。

标签: c# linq


【解决方案1】:

如果你想返回多个匹配项

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

如果要返回第一个匹配的则

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

【讨论】:

  • 谢谢!这就是我需要的。
【解决方案2】:

简单地做

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

确保包含System.LINQ 命名空间。

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2020-08-22
    相关资源
    最近更新 更多