小编Joh*_*nes的帖子

在LINQ中升序/降序 - 可以通过参数更改顺序吗?

我有一个方法,给出参数"bool sortAscending".现在我想使用LINQ根据此参数创建排序列表.我得到了这个:

var ascendingQuery = from data in dataList
                      orderby data.Property ascending
                      select data;

var descendingQuery = from data in dataList
                      orderby data.Property descending
                      select data;
Run Code Online (Sandbox Code Playgroud)

如您所见,两个查询仅在"升序"中有所不同."降".我想合并两个查询,但我不知道如何.有人有答案吗?

c# linq

74
推荐指数
4
解决办法
14万
查看次数

应该是IEquatable <T>的Equals()是通过IComparable <T>的CompareTo()实现的吗?

我一直在寻找互联网上的答案,但我发现的只有:

编辑:添加了一些项目以回答答案

  • 对于IEquatable

    • 我应该超载Equals(),GetHashCode(),==!=在一起.
    • 我应该通过实现!=via 减少冗余==.
    • 我应该密封课程
  • 对于IComparable

    • 我应该超载Equals(),GetHashCode(),<,>,<=>=在一起.
    • 实际上,建议在执行此操作时实现IEquatable
    • 重载非通用版本的IComparable
    • CompareTo() == 0 应该意味着 Equals() == true

所以我一直在想这个:

public bool Equals(T other)
{
    if ((object)other == null)
    {
        return false;
    }

    return CompareTo(other) == 0;
}
Run Code Online (Sandbox Code Playgroud)

我忽略了什么或者这样可以吗?

c#

14
推荐指数
2
解决办法
662
查看次数

Pathlib match() 没有找到具有相同模式的文件,可以通过 glob() 找到

我需要收集与某个目录下的模式匹配的文件,并确认位于该目录(或子目录)中的文件与该模式匹配。所以基本上我这样做:

Path('/foo').glob('bar/**/*.c')

返回“/foo/bar/file.c”。但如果我尝试另一种方式:

Path('/foo/bar/file.c').match('bar/**/*.c')

我只得到 False 回来。如果我删除“**”,它就会起作用:

Path('/foo/bar/file.c').match('bar/*.c')

如何在不改变模式的情况下使 glob() 和 match() 表现相同?我需要它递归地工作。

python-3.x

5
推荐指数
0
解决办法
882
查看次数

标签 统计

c# ×2

linq ×1

python-3.x ×1