小编Dav*_*son的帖子

比较两个大型通用列表

我找不到这个具体的例子,所以我发布了这个问题.任何帮助赞赏.

我有两个大的通用列表,都有超过300K的项目.

我循环遍历第一个列表以回读信息并为动态生成新列表的新项目,但是我需要在第二个列表中搜索并根据三个匹配条件返回一个值,如果发现要添加到列表,但是你可以想象,这样做300k*300k次需要时间.

有什么方法可以更有效地做到这一点吗?

我的代码:

var reportList = new List<StocksHeldInCustody>();
foreach (var correctDepotHolding in correctDepotHoldings)
  {
    var reportLine = new StocksHeldInCustody();
    reportLine.ClientNo = correctDepotHolding.ClientNo;
    reportLine.Value = correctDepotHolding.ValueOfStock;
    reportLine.Depot = correctDepotHolding.Depot;
    reportLine.SEDOL = correctDepotHolding.StockCode;
    reportLine.Units = correctDepotHolding.QuantityHeld;
    reportLine.Custodian = "Unknown";
    reportLine.StockName = correctDepotHolding.StockR1.Trim() + " " + correctDepotHolding.StockR2.Trim();

    //Get custodian info

    foreach (var ccHolding in ccHoldList)
    {
      if (correctDepotHolding.ClientNo != ccHolding.ClientNo) continue;
      if (correctDepotHolding.Depot != ccHolding.Depot) continue;
      if (correctDepotHolding.StockCode != ccHolding.StockCode) continue;
      if (correctDepotHolding.QuantityHeld != ccHolding.QuantityHeld) continue;
      reportLine.Custodian = ccHolding.Custodian;
      break; …
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0

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

CSV字符串的通用列表

我有一个列表,我想写入CSV字符串.

我发现的例子似乎都是针对单个项目列表,我的有多个项目.

我目前的代码是;

private static string CreateCSVTextFile<T>(List<T> data, string seperator = ",") where T : ExcelReport, new()
{
  var objectType = typeof(T);
  var properties = objectType.GetProperties();
  var currentRow = 0;
  var returnString = "";
  foreach (var row in data)
  {
    var currentColumn = 0;
    var lineString = "";
    foreach (var info in properties)
    {
      lineString = lineString + info.GetValue(row, null) + seperator;
      currentColumn++;
    }
    if (seperator != "")
    {
      lineString = lineString.Substring(0, lineString.Count() - 2);
    }
    returnString = returnString + …
Run Code Online (Sandbox Code Playgroud)

c# linq list

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

没有RDP时自动发送密钥失败

我有一个我希望运行自动化任务的VM(即自动化任务在实际VM上运行).

VM是Windows 2008服务器.

我已将任务添加到任务计划程序中,当我通过RDP登录计算机时,我可以通过右键单击"运行"来运行任务.

但是,当我的RDP会话关闭时(但VM上的用户仍然登录)该任务尝试运行,但只打开notepad.exe,但不会写入文本.

vbs脚本如下(我们在这里使用简化...);

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "Notepad.exe"
Do Until Success = True
Success = objShell.AppActivate("Notepad")
Wscript.Sleep 1000
Loop
objShell.SendKeys "This is a test."
Run Code Online (Sandbox Code Playgroud)

我有这项任务在Windows XP机器上完美运行,我只是无法理解导致问题的原因.

当没有通过RDP连接时,似乎VM上没有找到键盘.当通过RDP连接时,MSTSC将VM发送到我的键盘,然后可以正确运行任务.

谢谢,

大卫

vmware remote-desktop sendkeys

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

将通用列表C#批量插入SQL Server

如何将c#中的通用列表批量插入SQL Server,而不是循环遍历列表并一次插入一个项目?

我现在有这个;

private void AddSnapshotData()
{
  var password =       Cryptography.DecryptString("vhx7Hv7hYD2bF9N4XhN5pkQm8MRfxi+kogALYqwqSuo=");
  var figDb = "ZEUS";
  var connString =
    String.Format(
      "Data Source=1xx.x.xx.xxx;Initial Catalog={0};;User ID=appuser;Password={1};MultipleActiveResultSets=True",
      figDb, password);
  var myConnection = new SqlConnection(connString);
  myConnection.Open();

  foreach (var holding in _dHoldList)
  {
    lbStatus.Text = "Adding information to SQL for client: " + holding.ClientNo;
    _reports.AddZeusData("tblAllBrooksHoldingsSnapshot", "CliNo, SEDOL, ISIN, QtyHeld, DateOfSnapshot",
                         "'" + holding.ClientNo + "','" + holding.Sedol + "','" + holding.ISIN + "','" +
                         holding.QuantityHeld + "','" + DateTime.Today.ToString("yyyyMMdd") + "'", false, myConnection);
  }
  myConnection.Close();
  lbStatus.Visible …
Run Code Online (Sandbox Code Playgroud)

c# sql-server bulkinsert

3
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×3

.net-4.0 ×1

bulkinsert ×1

linq ×1

list ×1

remote-desktop ×1

sendkeys ×1

sql-server ×1

vmware ×1