linq 如何根据一个对象值将字典排序到不同的列表或字典中

bfrts1fy  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(175)

我有3个类,Book类包含一个页面的字典,在页面的字典中我们有Page类,在Page类中你有一个包含Word类的单词字典。
Word类是这样构建

public class Word : IWord
{
    public string Letter { get; set; }
    public ushort Number { get; set; }
}

我需要为我的项目排序的话,这样我就知道,如果有太多的一个字的信。
我在另一个文件中有一个函数,但在同一个项目中使用int differenceValue来实现这一点,如下所示:

Optimisation( int differenceValue, string Letter )
{

}

我需要一个列表或字典为每个Word.Letter是不同的,然后排序他们知道,如果我可以返回false与我的函数,如果两个字母之间的差异在字母表是大的。o = 15; g = 7。我们按顺序排序,并比较differenceValue15 - 4之间的差异。因此它返回false
我不知道从哪里开始,我想我可以使用LINQ,但我不知道如何使用它。

atmip9wb

atmip9wb1#

我很难理解你想用字典做什么。我想你选择字典是因为它是一种确保唯一值的方法。所以我没有一个完整的答案,但下面的代码将返回差值和优化布尔值。也许这可以让你开始。

bool IsOptimized(int diffValue, string word)
{
    return GetDifferenceValue(word) < diffValue;
}

int GetDifferenceValue(string word)
{   
    if (word == null || word.Trim().Length == 0)
    {
        return int.MaxValue;
    }
    
    // use regex to remove non-alpha characters i.e. "check-in" or "one,"
    var wordArray = Regex.Replace(word, @"[^\w.]", string.Empty)
           .ToLower()
           .OrderBy(x => x)
           .Distinct();
           
    return wordArray.Last() - wordArray.First();
}

相关问题