【问题标题】:Find string from a list从列表中查找字符串
【发布时间】:2020-05-23 15:52:56
【问题描述】:

我有一个包含几种成分的清单:

List<string> vegList = new List<string>();

其中有几个字符串,例如:“cherry”、“butter”、“bread”。

我的想法是有一个字典或类似的东西有一个菜谱字符串,如果它有一个或多个列表中的元素,则返回该菜谱的名称。

我尝试制作字典和数组,但没有得到我想要的。 谁能帮忙?

我试过了,但我不知道该怎么做了

myString = "receit pineapple cake, cherry, bread ..."
foreach(string item in vegList )
{
    if(item.Contains(myString))
       return item;
}

【问题讨论】:

  • 请分享您的代码和预期结果。现在你的问题太宽泛了
  • 偶然没听说过,看看有没有研究

标签: c# arrays list dictionary


【解决方案1】:

试试 Linq Any:

List<string> vegList = new List<string>()
{ "cherry", "butter", "bread"};

string recipe = "butterbread";

bool showRecipe = vegList.Any(s => recipe.Contains(s));

ShowRecipe 返回true

编辑 1: 以下代码在recipes 列表中搜索食谱并返回一个matchedRecipes 列表,其中包含与vegList 中的单词匹配的食谱。

List<string> vegList = new List<string>()
{ "cherry", "butter", "bread"};

List<string> recipes = new List<string>()
{ "steak", "butterbread", "cherrycake"};

List<string> matchedRecipes = recipes.Where(x => vegList.Any(s => x.Contains(s))).ToList();

matchedRecipes 列表包含"butterbread""cherrycake"

编辑 2:忽略字母的大小写也会有所帮助。

List<string> vegList = new List<string>()
{ "cherry", "butter", "bread"};

List<string> recipes = new List<string>()
{ "steak", "Butterbread", "Cherrycake"};

List<string> matchedRecipes = recipes.Where(x => vegList
                                     .Any(s => x.ToLower().Contains(s.ToLower())))
                                     .ToList();

【讨论】:

    【解决方案2】:

    如果每个配方都有一个vegList,或者更具体地说,您有一个带有List&lt;string&gt; vegList 字段的Recipe 类,假设您在某处有一个List&lt;Recipe&gt; recipes

    var ingredient = "cherry";
    
    var matches = recipes.FindAll(r => r.vegList.contains(ingredient));
    

    matches 将是 List&lt;Recipe&gt;,其中包含“樱桃”作为成分的食谱。


    随着问题更新的新场景,首先确保您的字符串的成分全部用空格分隔(我们不要让它变得更难)。

    myIngredients = myString.split(" ");
    

    然后找到食谱:

    var matches = recipes.FindAll(r => r.vegList.Any(l => myIngredients.contains(l)));
    

    在这种情况下,如果其vegList 至少包含myIngredients 中的一种成分,则选择该配方。

    【讨论】:

    • 问题是成分在清单上,你必须按成分写吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多