相关疑难解决方法(0)

是否可以定义扩展运算符方法?

是否可以定义一个同时是运算符的扩展方法?我想要一个固定的类添加使用实际上无法应用的已知运算符的可能性.对于这种特殊情况,我想这样做:

   somestring++;  //i really know that this string contains a numeric value
Run Code Online (Sandbox Code Playgroud)

我不想为所有代码传播类型转换.我知道我可以在字符串上创建包装类并定义该运算符但我想知道这种事情是否可以避免使用MySpecialString搜索和替换每个字符串声明.

编辑:因为大多数人说字符串是密封的,所以推导是不可能的,所以我修改"派生"到"包装",我的错误.

.net c# extension-methods operator-overloading operators

13
推荐指数
4
解决办法
9979
查看次数

我如何使用LINQ和字符串解析完成此示例?

我正在尝试编写一个简单的程序来比较单独文件夹中的文件.我目前正在使用LINQ to Objects来解析文件夹,并希望在我的结果集中包含从字符串中提取的信息.

这是我到目前为止所拥有的:

FileInfo[] fileList = new DirectoryInfo(@"G:\Norton Backups").GetFiles();

var results = from file in fileList
              orderby file.CreationTime
              select new { file.Name, file.CreationTime, file.Length };

foreach (var x in results)
    Console.WriteLine(x.Name);
Run Code Online (Sandbox Code Playgroud)

这会产生:

AWS025.sv2i
AWS025_C_Drive038.v2i
AWS025_C_Drive038_i001.iv2i
AWS025_C_Drive038_i002.iv2i
AWS025_C_Drive038_i003.iv2i
AWS025_C_Drive038_i004.iv2i
AWS025_C_Drive038_i005.iv2i    
...
Run Code Online (Sandbox Code Playgroud)

我想修改LINQ查询,以便:

  • 它只包含实际的"备份"文件(您可以告诉备份文件,因为_C_Drive038上面的示例中,但038 驱动器号可能会更改).
  • 如果文件是"主"备份文件(即_i0XX文件名末尾没有),我想要包含一个字段.
  • 我想要包含文件的"图像编号"(例如,在这种情况下它是038).
  • 我希望包含增量编号,如果它是基本文件001的增量(例如,将是增量编号)

我相信查询的基本布局如下所示,但我不确定如何最好地完成它(我有一些关于如何做到这一点的想法,但我有兴趣听到其他人如何可能会这样做):

var results = from file in fileList
              let IsMainBackup = \\ ??
              let ImageNumber = \\ ??
              let IncrementNumber = \\ ??
              where …
Run Code Online (Sandbox Code Playgroud)

c# regex linq linq-to-objects parsing

5
推荐指数
2
解决办法
1146
查看次数