abdul subhan mohammed Ответов: 2

Как объединить два списка в виде двух столбцов в C#


Привет Ребята,

У меня есть два списка, и в новом списке я хочу объединить эти два столбца как два столбца в c#.

Что я уже пробовал:

я пробовал использовать контакт, но это добавить список только в один столбец.

пожалуйста, помогите мне, ребята.

Спасибо

Tomas Takac

Не ясно, вы хотите декартово произведение двух списков? Или вы хотите присоединиться к ним каким-то ключом?

Maciej Los

Не делайте репостов!
http://www.codeproject.com/Questions/1121361/How-to-bind-two-list-in-a-single-gridview-in-Cshar
Вместо этого используйте Улучшить вопрос виджет!

Patrice T

Что у тебя там ?
Покажите код и объясните проблему.

2 Ответов

Рейтинг:
13

OriginalGriff

Это сложно, потому что все зависит от того, что находится в этих двух списках. Если они имеют общее значение, вы можете присоединиться к ним довольно легко, но я подозреваю, что из-за вашего желания объединить их в виде двух столбцов в новом списке они этого не делают.
В таком случае, это немного сложно, но:

List<string> ls = new List<string>();
ls.Add("S1");
ls.Add("S2");
ls.Add("S3");
ls.Add("S4");
List<int> li = new List<int>();
li.Add(1);
li.Add(2);
li.Add(3);
li.Add(4);
var newList = ls.Join(li, s => ls.IndexOf(s), i => li.IndexOf(i), (s, i) => new { sv = s, iv = i }).ToList();
foreach (var x in newList)
    {
    Console.WriteLine("{0}, {1}", x.sv, x.iv);
    }

Даст вам две колонки, которые вы, кажется, хотите:
S1, 1
S2, 2
S3, 3
S4, 4


Maciej Los

5ед!

Member 13946703

Когда я использовал этот код, выход был той же самой строкой, повторенной для каждого элемента в newList (например: S1, 1
S1, 1
S1, 1
S1, 1)
Как мне это исправить?

OriginalGriff

Я написал это 2 года назад, когда ваш код и данные были мне недоступны.
Как ты думаешь, у меня есть хоть малейшее представление о том, что ты на самом деле сделал или с чем ты это сделал?

Рейтинг:
0

Matt T Heffron

Похоже, вы могли бы просто использовать Linq .Zip():

// "borrowing" from OriginalGriff's code ;-)
List<string> ls = new List<string>();
ls.Add("S1");
ls.Add("S2");
ls.Add("S3");
ls.Add("S4");
List<int> li = new List<int>();
li.Add(1);
li.Add(2);
li.Add(3);
li.Add(4);
var newList = ls.Zip(li, (s, i) => new { sv = s, iv = i }).ToList();
foreach (var x in newList)
{
  Console.WriteLine("{0}, {1}", x.sv, x.iv);
}

Если списки имеют разную длину, .Zip() остановится когда либо выбегать.