我正在浏览列表并从每条记录中提取位置值
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"
我写了一个查询,从找到位置的positionTable中提取所有记录。 如果我使用
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
答案 0 :(得分:2)
不是从初始数据生成字符串,而是直接转到可枚举,这样的东西应该可以工作:
var allPositions = volunteerList
.Select(v => v.Position)
.ToList();
这将允许您现在执行此操作:
var positionList = (from p in DbContext.PositionList
where allPositions.Contains(p.Position)
select p)
.ToList();
答案 1 :(得分:1)
只需使用Split
方法:
var allPositionsListed = "51000785,52012986";
var allPositions2 = allPositionsListed.Split(',');
allPositions2将是:
allPositions2 [0] - &gt; &#34; 51000785&#34;
allPositions2 [1] - &gt; &#34; 52012986&#34;
如果你看到KB,它会说明String#ToArray方法的输出
包含输入序列中元素的数组。
所以,它按预期工作(当然)!你需要使用正确的方法。