【问题标题】:convert string to array not working将字符串转换为数组不起作用
【发布时间】:2017-08-22 00:32:53
【问题描述】:

我正在遍历一个列表并从每条记录中提取位置值

string allPositionsListed = "";
int lastRecord = volunteerAssignmentList.Count;
int currentRecord = 0;
foreach (Volunteer va in volunteerList)
{
  currentRecord++;
  if (currentRecord == lastRecord)
  {
      allPositionsListed += va.Position;
  }
  else
  {
     allPositionsListed += va.Position + ",";
  }
}

//allPositionsListed returns: "51000785,52012986"

我编写了一个查询,从找到位置的位置表中提取所有记录。 如果我使用

var allPositions = new string[] { "51000785", "52012986" };

List<PositionTable> positionList = (from p in DbContext.PositionList
                 where allPositions.Contains(p.Position)
                select p).ToList();

这会返回正确的结果...但是由于 allPositions 值可能不同,我如何将其转换为必要的字符串数组。 我试过了

var allPositions2 = allPositionsListed.ToArray();

but this returns 
[0]5
[1]1
[2]0
[3]0
[4]7
etc...

when I need 
[0]51000785
[1]52012986

【问题讨论】:

    标签: c# arrays list arraylist


    【解决方案1】:

    您可以直接转到可枚举的对象,而不是从初始数据生成字符串,这样应该可以:

    var allPositions = volunteerList
        .Select(v => v.Position)
        .ToList();
    

    现在您可以这样做:

    var positionList = (from p in DbContext.PositionList
                        where allPositions.Contains(p.Position)
                        select p)
        .ToList();
    

    【讨论】:

      【解决方案2】:

      只需使用Split 方法:

      var allPositionsListed = "51000785,52012986";
      var allPositions2 = allPositionsListed.Split(',');
      

      allPositions2 将是:
      allPositions2[0] -> "51000785"
      allPositions2[1] -> "52012986"


      如果您看到 KB,它说明了 String#ToArray 方法的输出

      一个包含输入序列元素的数组。

      所以,它按预期工作(当然)!你需要使用正确的方法。

      【讨论】:

      • 虽然你的答案是正确的,但一开始甚至不需要生成字符串。
      • @DavidG,是的,但我想准确指出问题所在。绝对可以只使用contains 方法来解决问题,但他不会意识到他为此目的调用了错误的方法。
      • 即使你的回答最终也会导致使用Contains
      • @DavidG,是的,那有什么问题。请再次阅读问题的标题,然后决定答案的外观。
      • 我想说的是根本没有必要这样做,这是浪费资源。
      猜你喜欢
      • 2014-05-12
      • 1970-01-01
      • 2012-01-14
      • 2021-06-28
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      相关资源
      最近更新 更多