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

本文关键字:数据库 工作 方式 类似于 LINQ 搜索 列表 | 更新日期: 2023-09-27 18:15:48

我从来没有使用过LINQ之前,我只听说过它,我相信这就是我所寻找的。我得到了一个文本文件,里面有与西班牙语单词匹配的英语单词。我必须接受一个英文输入,例如aunt,并将其与西班牙语值la tia相匹配。如果我遍历文本文件并创建一个存储类别、英语单词和西班牙语单词的单词对象数组或列表。我如何在c#代码中做这样的事情呢?

从WordList中找到与englishValue相似的spanishValue这个例子需要说明他们可能省略了"the"或拼写错误的英语单词。我可以在数据库中这样做,但在代码中怎么做呢?

我的列表:

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;
            }
        }

    }
}

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

好吧,还有更多的翻译只是纯粹的文字,所以我的回答将不讨论语义。仅限纯替换。

我想你认为你可以在这里使用LINQ,因为它看起来像SQL查询只在代码中,你以前在SQL中做过这个,对吗?

无论如何,LINQ不是答案。LINQ功能非常广泛,在这个阶段无法解释。试着跟随教程。我只想说,这不是你需要在这里使用的。

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

(这两种方法都假设您已经解析了单词定义文本文件并在内存中构建了单词字典,或者您能够根据需要查询该文件)

  1. 使用正则表达式查找所有单词,然后循环遍历它们并从单词字典中获得相应的翻译,OR
  2. 编写一个词法分析器来标记所讨论的文本。然后,您可以遍历令牌并根据需要进行翻译。

我建议第2点,因为如果你想在某个时候考虑其他事情,比如语义,它是你可以建立的基础。

词法分析器的工作方式是,它将遍历文本进行翻译,并对其进行解析,为它识别的实体创建标记。然后,您可以遍历这些标记,如果您将其识别为"单词",则可以查询字典并查找相应的翻译。

(这是编译器的工作方式)

看看这个:https://en.wikipedia.org/wiki/Lexical_analysis

我相信还有其他的方法。这只是一个简短的回答。

据我所知,您正在寻找.ToDictionary()方法。

如果您有一个对象string english, string spanish元素列表,您应该将其设置为yourList.ToDictionary(p => english, p => spanish),这将使您能够键入resultDict['the Aunt']并给出la tia