C#LINQ搜索列表,类似于数据库的工作方式

时间:2016-11-01 20:53:49

标签: c# linq

在我刚刚听说过之前,我从未使用过LINQ,我相信这就是我要找的东西。我收到了一个文本文件,其英文单词与西班牙语单词相匹配。我必须采取英语输入,例如阿姨,并将其与西班牙语la tia匹配。如果我运行文本文件并创建一个存储类别,英语单词和西班牙语单词的数组或单词对象列表。我怎么能在C#代码中做这样的事情。

从WordList中查找spanishValue,其中englishValue就像阿姨;这个例子需要说明他们可能会省略“'或错误拼写英文单词。我可以在数据库中做这样的事情,但在代码中是怎么做的。

我的清单:

List<Word> Words = new List<Word>();

我的Word.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TranslatorLibrary
{
    public class Word
    {
        public String English { get; set; }
        public String Spanish { get; set; }

        public CategoryEnumerator Category { get; set; }
        public Word(String en, String sp, CategoryEnumerator cat)
        {
            English = en;
            Spanish = sp;
            Category = cat;
        }

        public static CategoryEnumerator matchCategory(String obj)
        {
            switch (obj)
            {
                case "Family":
                    return CategoryEnumerator.Family;
                default:
                    return CategoryEnumerator.Family;
            }
        }


    }
}

2 个答案:

答案 0 :(得分:1)

嗯,翻译那些纯粹的单词还有很多,所以我的答案不会讨论语义。纯粹的替代品。

我认为你认为你可以在这里使用LINQ,因为它看起来只是SQL查询在代码中而你之前在SQL中完成了这个,对吗?

无论如何,LINQ不是答案。在这个阶段,LINQ功能太过广泛而无法解释。请尝试按照教程进行操作。我只想说这不是你需要在这里使用的东西。

有很多方法可以完成您的任务。以下是我能想到的两个问题:

(这些都假设您已经解析了单词定义文本文件并在内存中构建了单词字典,或者您可以按需查询文件)

  1. 使用正则表达式查找所有单词,然后遍历它们并从单词词典中获取相应的翻译,或者
  2. 编写一个词法分析器来标记有问题的文本。然后,您可以浏览令牌并根据需要进行翻译。
  3. 我建议使用数字2,因为如果您希望在某些时候考虑语义等其他内容,可以使用它。

    词法分析器的工作方式是它将通过文本进行翻译,并将解析它,为它识别的实体创建标记。然后,您可以浏览这些令牌,如果您将其识别为&#34; word&#34;,则可以查询字典并找到相应的翻译。

    (这就是编译器的工作原理)

    检查出来:https://en.wikipedia.org/wiki/Lexical_analysis

    我相信还有其他方法。这只是一个快速的答案。

答案 1 :(得分:0)

据我了解,您正在寻找.ToDictionary()方法。

如果你有一个对象string english, string spanish元素的列表,你应该yourList.ToDictionary(p => english, p => spanish)这样做,这样你就可以输入resultDict['the Aunt']并给你la tia

相关问题