2013-03-07 4 views
-2

Я хочу написать программу,Сравнение списков в C#

-> Если я даю два пути, которые являются path1 и path2.

-> Те, кому нужно сравнить и распечатать разные (которые находятся в каталоге path1 и которые не находятся в каталоге path2 и наоборот) и файлы.

-> Я использую списки буксировки для папок и файлов.

-> Я столкнулся с проблемой сравнения двух списков распечатать список различий.

Как я могу сравнить два элемента списка и распечатать другой элемент?

+0

«Я хочу, чтобы написать программу,» - то, что вам мешает? –

+0

Покажите нам, что вы пытались сделать, и мы можем вам помочь. – Middas

ответ

1

Я думаю, что вы имеете в виду что-то вроде этого:

using System; 
using System.Collections.Generic; 
using System.Linq; 

namespace ConsoleApplication11 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      var listA = new List<int> {1, 2, 5, 4, 7, 6, 5, 3}; 
      var listB = new List<int> {4, 2, 7, 4, 3, 6, 7, 8, 9, 4, 1}; 

      var itemsInANotInB = listA.Except(listB).ToList(); 
      var itemsInBNotInA = listB.Except(listA).ToList(); 

      var listsHaveAllElementsInCommon = !(itemsInANotInB.Any() && itemsInBNotInA.Any()); 
      var listAreSequenceEqal = listA.SequenceEqual(listB); 

      Console.WriteLine("Items in A but not in B: {0}", itemsInANotInB.Select(x=>x.ToString()).Aggregate((x,y) => x+", "+y)); 
      Console.WriteLine("Items in B but not in A: {0}", itemsInBNotInA.Select(x => x.ToString()).Aggregate((x, y) => x + ", " + y)); 
      Console.WriteLine("A and B share the same elements? {0}", listsHaveAllElementsInCommon); 
      Console.WriteLine("A and B are sequence-equal? {0}", listAreSequenceEqal); 
      Console.Read(); 
     } 
    } 
} 
+0

что в вашем списке? объекты должны быть сопоставимы «равно» и, возможно, должны реализовывать IEquatable . – TheHe

+0

Да. Спасибо, я получил это. – Rajiv