Csv жолдарын қамтитын 2 тізімді қалай біріктіру және нәтижені басқа csv-мен салыстыру

Менің тізімім бар:

List l1 = new List { "A4,A2","A1,A3" };
List l2 = new List { "A5,A6", "A7,A8" };

Мен осы 2-ні біріктіріп, үтірмен бөлінген барлық элементтерді қамтитын тізім жасау керек, сондықтан мен мыналарды қамтитын нәрсемен аяқталуға тиіс:

A4, A2, A1, A3, A5, A6, A7, A8, A9

2 тізімді біріктіру үшін келесі әрекеттерді жасадым:

string s1 = string.Join(",", l1.ToArray());
string s2 = string.Join(",", l2.ToArray());

var combinedItems = s1 + "," + s2;

Содан кейін нәтижені A1-ден A8-ге дейінгі элементтер бар екеніне көз жеткізу үшін басқа тізіммен салыстыруға тура келеді

var allItems = new List { "A1,A2,A3,A4,A5,A6,A7,A8" };

bool allItemsExist = allItems.Any(combinedItems.Contains);

Бұл сәтсіз аяқталады, себебі combinedItems айнымалысы тәртібі allItems тапсырысына сәйкес келмейді.

combinedItems мазмұнын қалай сұрыптауға болады немесе қол жеткізуге талпынған тағы бір амал бар ма?

0

8 жауаптар

var items = new[] { l1, l2 }
            .SelectMany(x => x.SelectMany(y => y.Split(',')))
            .OrderBy(y => y);

var allItems = new List 
                        { "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8" };

var result = allItems.SequenceEqual(items);
2
қосылды
әдемі шешім :)
қосылды автор meorfi, көзі
var items = new[] { l1, l2 }
            .SelectMany(x => x.SelectMany(y => y.Split(',')))
            .OrderBy(y => y);

var allItems = new List 
                        { "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8" };

var result = allItems.SequenceEqual(items);
2
қосылды
әдемі шешім :)
қосылды автор meorfi, көзі

қатал шешім:

      List l1 = new List { "A4,A2", "A1,A3" };
      List l2 = new List { "A5,A6", "A7,A8" };

      var s1 = string.Join(",", l1.ToArray());
      var s2 = string.Join(",", l2.ToArray());

      var combinedItems = s1 + "," + s2;
      var splittedAndOrderedCombinedItems = combinedItems.Split(',').OrderBy(x => x).ToList();

      var allItems = new List { "A1,A2,A3,A4,A5,A6,A7,A8" };
      var firstOrDefault = allItems.FirstOrDefault();

      var splittedAllItems = new List();
      if (firstOrDefault != null) {
        splittedAllItems = firstOrDefault.Split(',').ToList();
      }

      var result = splittedAllItems.Any(splittedAndOrderedCombinedItems.Contains);
1
қосылды

қатал шешім:

      List l1 = new List { "A4,A2", "A1,A3" };
      List l2 = new List { "A5,A6", "A7,A8" };

      var s1 = string.Join(",", l1.ToArray());
      var s2 = string.Join(",", l2.ToArray());

      var combinedItems = s1 + "," + s2;
      var splittedAndOrderedCombinedItems = combinedItems.Split(',').OrderBy(x => x).ToList();

      var allItems = new List { "A1,A2,A3,A4,A5,A6,A7,A8" };
      var firstOrDefault = allItems.FirstOrDefault();

      var splittedAllItems = new List();
      if (firstOrDefault != null) {
        splittedAllItems = firstOrDefault.Split(',').ToList();
      }

      var result = splittedAllItems.Any(splittedAndOrderedCombinedItems.Contains);
1
қосылды

Барлық элементтерді бөлуге болады:

List l1 = new List { "A4,A2", "A1,A3" }.SelectMany(x => x.Split(',')).ToList();
List l2 = new List { "A5,A6", "A7,A8" }.SelectMany(x => x.Split(',')).ToList();

string combinedItems = string.Join(",", l1.Concat(l2));

List allItems = new List { "A1,A2,A3,A4,A5,A6,A7,A8" }.SelectMany(x => x.Split(',')).ToList();

bool allItemsExist = allItems.All(combinedItems.Contains);
0
қосылды

Барлық жолдарды «A1» «A2» бөліктеріне бөліп, оларды сұрыптап, қосыңыз.

    List l1 = new List { "A4,A2", "A1,A3" };
    List l2 = new List { "A5,A6", "A7,A8" };
    var result = l1.SelectMany(x => x.Split(',')).Union(l2.SelectMany(x => x.Split(','))).OrderBy(x => x).ToList();
    var str = string.Join("," , result);
    str.Dump();

Шығару:

A1,A2,A3,A4,A5,A6,A7,A8
0
қосылды

Барлық жолдарды «A1» «A2» бөліктеріне бөліп, оларды сұрыптап, қосыңыз.

    List l1 = new List { "A4,A2", "A1,A3" };
    List l2 = new List { "A5,A6", "A7,A8" };
    var result = l1.SelectMany(x => x.Split(',')).Union(l2.SelectMany(x => x.Split(','))).OrderBy(x => x).ToList();
    var str = string.Join("," , result);
    str.Dump();

Шығару:

A1,A2,A3,A4,A5,A6,A7,A8
0
қосылды

Жылдам және кірлеген:

        var allItemsList = allItems.First().Split(',').ToList();
        var combinedItemsList = combinedItems.Split(',').ToList();

        bool allItemsExists = combinedItemsList.All(x => allItemsList.Contains(x)); 

Тізімдегі бір элемент ретінде үтірмен бөлінген жолды сақтаудың мағынасы жоқ, сондықтан осы тізімнен REAL тізімін жасаңыз.

Менің соңғы мәлімдеме allItemsList-да әрбір элемент (A1-A8) бар-жоғын анықтайды.

PS: allItemsExists менің тестімдегі true мәнін қайтарады.

0
қосылды