我下面有这样的ID列表
List<int> ids = new List<int>();
然后我有一个长度列表,它也是下面这样的整数。
List<int> lengths = new List<int>();
现在我需要使用linq查询以如下所示的数据格式插入表中
ID length
1 1
1 2
1 3
2 1
2 2
2 3
为此,我这样做
foreach (var item in ids)
{
foreach (var item in lengths)
{
}
}
使用上述方法,我无法在表中插入多个ID。我希望应该有更好的方法来执行此操作。 任何人都可以提出关于这个想法的任何想法,这对我非常感激。
谢谢。
答案 0 :(得分:3)
如果您想使用 LINQ 将这两个列表投影到扁平列表中,则可以使用SelectMany
将序列的每个元素投影到IEnumerable并展平 产生的序列变成一个序列。
// projecting to an anonymous type
var results = ids.SelectMany(id => lengths.Select(length => new {id, length }));
// or projecting to a value tuple
var results = ids.SelectMany(id => lengths.Select(length => (id, length)));
答案 1 :(得分:0)
如果您确实想要一个循环,则可以循环遍历最终结果的长度,并将索引计算到每个List
中:
var idsCount = ids.Count;
var lengthsCount = lengths.Count;
var totalCount = idsCount * lengthsCount;
for (int j1 = 0; j1 < totalCount; ++j1) {
var id = ids[j1 / lengthsCount];
var length = lengths[j1 % lengthsCount];
new { id, length }.Dump();
// insert id,length
}