我有2个字符串列表。
var justiceCourtName = formCollection["JusticeCourtName"];
var courtId = formCollection["CourtID"];
var justiceCourtNameList = justiceCourtName.Split(',');
var courtIdList = courtId.ToList();
justiceCourtNameList值如下:
"New York"
"Paris"
courtIdList值低于:
"10.33"
"43.15"
我的问题:
我需要使用foreach for justiceCourtNameList和courtIdList,之后,从justiceCourtNameList到Name(下面),从courtIdList到lawCourtId逐一使用。
但我不知道如何将justiceCourtNameList和courtIdList逐一设置为新的LawCourt?
var lawCourt = new LawCourt { JusticeCourtID = lawCourtId, Name = lawCourtName };
ServiceLibraryHelper.LawServiceHelper.UpdateLawCourt(lawCourt); // Update
答案 0 :(得分:3)
如果我理解你的问题,你想要的是Zip
扩展方法:
var results = courtIdList
.Zip(justiceCourtNameList,
(lawCourtId, lawCourtName) =>
new LawCourt
{
JusticeCourtID = lawCourtId,
Name = lawCourtName
)};
它并行枚举列表,并将第一个列表中的当前项与第二个列表中的当前项相关联。 lambda表达式根据输入序列中的项对指定输出序列中的返回值。
答案 1 :(得分:1)
可能Enumerable.Zip
可以满足您的目的(MSDN link):
int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };
var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);
foreach (var item in numbersAndWords)
Console.WriteLine(item);
// This code produces the following output:
// 1 one
// 2 two
// 3 three
答案 2 :(得分:0)
不要使用foreach
运算符,而是使用for
运算符。之前检查两个数组的长度是否相等。
List<string> justiceCourtNameList = ...
List<double> courtIdList = ...
if(justiceCourtNameList.Count != courtIdList.Count) {
throw new ArgumentException("justiceCourtNameList and courtIdList must have the same length");
}
for(int i=0; i<justiceCourtNameList.Count; i++) {
string justiceCourtName = justiceCourtNameList[i];
double courtId = courtIdList[i];
// DO HERE WHATEVER YOU WANT HERE
}
无法使用foreach
进行双重同步迭代。