Linq с несколькими foreach вставки элементов в таблицу - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть список идентификаторов, как это ниже

       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)
             {

              }

       }

С помощью описанного выше способа я не могу вставить несколько идентификаторов в таблицу .. Я надеюсь, что должен быть лучший способ сделать это .. Может ли кто-нибудь предложить какие-либо идеи на этот счет, которые были бы очень благодарны мне ..

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 19 апреля 2019

Если вы хотите проецировать эти 2 списка в единый список с помощью 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)));
0 голосов
/ 20 апреля 2019

Если вы действительно хотите один цикл, вы можете зациклить конечную длину результата и вычислить индексы для каждого 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...