这是一个几乎学术上的问题,但我很好奇它的答案.
假设您有一个循环,它在数据集中的每一行上执行例程替换.假设有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%,你的回答是否会有所不同?
我有这个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(),但这没有帮助.
谢谢!
我想编写一个Web应用程序,它有两个按钮,直接从浏览器中允许我打开两个简单的文本文件(使用文件打开对话框或类似的东西),然后继续读取这些文件的内容和将它们存储在两个字符串中.这里的关键点是,用于从中读取的确切文件在运行时是未知的,因此用户可以选择文件.
我的目标是能够稍后比较这两个字符串,但那部分我已经知道该怎么做了.我的问题是这样 - 甚至可以在Web应用程序内部执行此操作(即调用"文件打开"对话框以允许用户选择要读取的文件),或者安全限制或某些其他与Web应用程序相关的约束会阻止它从完成?
如果可能的话,我会很感激一些示例代码,用于描述如何打开文件以及如何将所选文件的内容读入字符串.Othwerwise,我想知道它是否不可能,我应该考虑做一个桌面应用程序或尝试完全不同的方式.
谢谢!
我有一个包含大量字符串的ArrayList.它需要根据三个字段(基本上是三个子字符串)进行排序,这三个字段是Name,Age和Amt.年龄是第一个子串(位置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>不是这个项目的一个选项).