小编Gon*_*ght的帖子

在执行C#中的替换之前执行检查是否效率更高或更低?

这是一个几乎学术上的问题,但我很好奇它的答案.

假设您有一个循环,它在数据集中的每一行上执行例程替换.假设有10,000个这样的行.

有这样的事情会更有效率:

 Row = Row.Replace('X', 'Y');
Run Code Online (Sandbox Code Playgroud)

或者检查行是否甚至包含首先要替换的字符,如下所示:

 if (Row.Contains('X')) Row = Row.Replace('X', 'Y');
Run Code Online (Sandbox Code Playgroud)

效率方面有什么不同吗?我意识到差异可能非常小,我有兴趣知道一种方式是否优于另一种方式,无论它有多好.另外,如果找到要替换的角色的概率是90%,你的回答是否会有所不同?

c# text replace

13
推荐指数
1
解决办法
1166
查看次数

LINQ和CASE灵敏度

我有这个LINQ查询:

TempRecordList = new ArrayList(TempRecordList.Cast<string>().OrderBy(s => s.Substring(9, 30)).ToArray());
Run Code Online (Sandbox Code Playgroud)

它工作得很好,并以一种准确但与我想要的有点不同的方式进行排序.在查询的结果中,我看到这样的事情:

Palm-Bouter,Peter
Palmer-Johnson,Sean

而我真正需要的是将名称排序如下:

Palmer-Johnson,Sean
Palm-Bouter,Peter

基本上我希望' - '字符被视为低于字符,以便包含它的名称稍后在升序搜索中显示.

这是另一个例子.我明白了:

Dias,Reginald
DiBlackley,Anton

代替:

迪布拉克利,安东
迪亚斯,雷金纳德

正如您所看到的,由于大写字母"B"的处理方式,订单也会被切换.

所以我的问题是,我需要在LINQ查询中更改什么才能使其按照我指定的顺序返回结果.任何反馈都会得到极大的反响.

顺便说一句,我尝试使用s.Substring(9,30).ToLower(),但这没有帮助.

谢谢!

linq sorting linq-to-objects case-sensitive

2
推荐指数
1
解决办法
4102
查看次数

是否可以在C#ASP.NET Web应用程序中执行此操作?

我想编写一个Web应用程序,它有两个按钮,直接从浏览器中允许我打开两个简单的文本文件(使用文件打开对话框或类似的东西),然后继续读取这些文件的内容和将它们存储在两个字符串中.这里的关键点是,用于从中读取的确切文件在运行时是未知的,因此用户可以选择文件.

我的目标是能够稍后比较这两个字符串,但那部分我已经知道该怎么做了.我的问题是这样 - 甚至可以在Web应用程序内部执行此操作(即调用"文件打开"对话框以允许用户选择要读取的文件),或者安全限制或某些其他与Web应用程序相关的约束会阻止它从完成?

如果可能的话,我会很感激一些示例代码,用于描述如何打开文件以及如何将所选文件的内容读入字符串.Othwerwise,我想知道它是否不可能,我应该考虑做一个桌面应用程序或尝试完全不同的方式.

谢谢!

c# asp.net web-applications

2
推荐指数
1
解决办法
491
查看次数

ArrayList排序

我有一个包含大量字符串的ArrayList.它需要根据三个字段(基本上是三个子字符串)进行排序,这三个字段是Name,AgeAmt.年龄是第一个子串(位置0-3),名称是第二个(3-6),Amt是最后一个(6-10).这些参数的排序顺序非常重要,如下所示:

首先名称执行升序排序然后年龄进行升序排序(实际上在子字符串中更早出现),然后由Amt 按降序排序.而已.

我有这门课

public class ArrComparer : IComparer
{
    public int Compare(object x, object y)
    {
        string left = x.ToString();
        string right = y.ToString();
        string lhs = left.Substring(3, 6);
        string rhs = right.Substring(3, 6);
        return lhs.CompareTo(rhs);
    }
}
Run Code Online (Sandbox Code Playgroud)

我用来根据一个字段进行排序 - 通过调用名称

RecordList.Sort(new ArrComparer());
Run Code Online (Sandbox Code Playgroud)

这让我可以根据这一个字段正确排序.问题是如何修改此代码以允许我按照正确的顺序并使用正确的asc/desc模式对所有三个AT ONCE进行排序?

任何代码或提示将不胜感激.(顺便说一句,如果你想知道使用泛型List<T>不是这个项目的一个选项).

.net c# sorting arraylist icomparer

1
推荐指数
1
解决办法
2326
查看次数