我有这段代码:
DataTable dt = new DataTable();
dt.Columns.Add("Status");
dt.Columns.Add("File");
dt.Columns.Add("Revision");
int i = 0;
foreach (SvnStatusEventArgs status in statuses) // statuses is a Collection
{
dt.Rows.Add();
switch (status.LocalContentStatus)
{
case SvnStatus.NotVersioned:
dt.Rows[i]["Status"] = "Not Versioned";
break;
default:
dt.Rows[i]["Status"] = status.LocalContentStatus.ToString();
break;
}
dt.Rows[i]["File"] = status.Path;
foreach(SvnInfoEventArgs info in infos) //infos is a Collection
{
if (status.Path.Equals(info.Path))
{
dt.Rows[i]["Revision"] = info.Revision;
break;
}
}
i++;
}
Run Code Online (Sandbox Code Playgroud)
statuses并且infos可以在每个高达20K行,然而,我的嵌套的foreach可能需要很长的时间.
如果我将这些集合转换为列表然后尝试对它们进行排序,我想我可以加快速度Path.
查看Sort方法的MSDN页面,我不知道如何比较PathSvnStatusEventArgs [n]和SvnStatusEventArgs [n + 1]中的字段.然后我也开始怀疑,因为我将完全迭代这两组对象并对它们进行排序,这真的比我现有的代码更有效吗?我想它会是n*2而不是n*n,对吗? …
我正在开发一个应该能够运行2个脚本中的一个的应用程序,具体取决于运行该应用程序的操作系统是x64还是x86.
搜索过,我遇到了这个帖子:如何用.NET检测Windows 64位平台?
但显然我的老板担心最佳答案可能不适用于所有操作系统'我们的用户将运行(XP/Vista/7).他推荐了这个代码示例:
private void GetCpuDetails(out string cpuType)
{
cpuType = "...";
try
{
using (RegistryKey regKey = Registry.LocalMachine)
{
using (RegistryKey subRegKey = regKey.OpenSubKey("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"))
{
if (subRegKey.GetValue("ProcessorNameString") != null)
{
cpuType = subRegKey.GetValue("ProcessorNameString").ToString();
}
subRegKey.Close();
}
regKey.Close();
}
}
catch
{
cpuType = "...";
}
}
Run Code Online (Sandbox Code Playgroud)
但我不明白你怎么可能从CPU确定操作系统版本.这似乎与使用PROCESSOR_ARCHITECTURE完全相同,因为它基于CPU而不是操作系统获得64位或32位.
在一个KeyDown事件中,我有以下内容:
switch (e.KeyCode)
{
case Keys.V:
if (e.Modifiers.Equals(Keys.Control))
AddRow();
break;
case Keys.Back:
RemoveRow();
break;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的第一次崩溃case所以它会是什么样的case Keys.V && Modifiers.Control?它嵌套在里面看起来真的很难看= [
所有我能找到的都是落空条件,这不是我正在寻找的,因为我正在评估e.KeyCode和e.Modifiers.
我有这个方法告诉我,我有一些无效的参数,我试图RemoveAll从我的List<SelectListItem>对象调用.我只需要根据简单的条件从下拉列表中删除一些项目.
public JsonResult GetExportTables(CaseListDynExport objCaseListDynExport)
{
List<SelectListItem> lstExportTablesList = new List<SelectListItem>();
try
{
CaseListDynExportBLL objCaseListDynExportBLL = new CaseListDynExportBLL();
DataTable dtExportTables = objCaseListDynExportBLL.GetExportTables(objCaseListDynExport);
lstExportTablesList = DropDownHelper.GetSelectListItem("TableName", "TableExportCode", null, dtExportTables);
if (objCaseListDynExport.someCondition)
lstExportTablesList.RemoveAll(lstExportTablesList.Where(l => l.Text.IndexOf("Audit") >= 0));
}
catch (Exception ex)
{
LogUtility.ErrorException(ex);
}
return Json(lstExportTablesList, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
我必须遗漏一些非常明显的东西,但我无法发现我做错了什么.
我看过这些帖子:
但是,是的 无法发现我做错了什么...
如何确定中的任何单个字符是否src与中的任何单个字符匹配restricted?我有可以执行此工作的JS方法,但是如果可以的话,我想对其进行改进:
function CheckRestricted(src, restricted)
{
for (var i = 0; i < src.length; i++)
{
for (var j = 0; j < restricted.length; j++)
{
if (src.charAt(i) == restricted.charAt(j))
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果这是C#,则可以用LINQ在一行中实现:
bool CheckRestricted(string src, string restricted)
{
return src.Any(s => restricted.Contains(s));
}
Run Code Online (Sandbox Code Playgroud)
我不知道JS中是否有某种类似的功能?
编辑:示例用例:
CheckRestricted("ABCD", "!+-=;:'`"); //true
CheckRestricted("ABCD!", "!+-=;:'`"); //false
Run Code Online (Sandbox Code Playgroud)
它主要用于禁止“特殊字符”。