var list1 = project.Lists["list1"];
var list2 = project.Lists["list2"];
var list3 = project.Lists["list3"];
var list4 = project.Lists["list4"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check_1 = list2.Contains(s);
bool check_2 = list3.Contains(s);
if(check_1 && check_2) hash.Add(s);
}
if(hash.Count > 0) list4.AddRange(hash);
Код который дал @BAZAg хорош, но вот что будет если у тебя в списке 2 или 3 есть строка которой нет в списке 1 ? Насколько я понимаю в предложенном коде идет сравнение списка 1 со списками 2 и 3, а не каждого списка со всеми остальными. Или тебе нужно только первый сравнивать?Если какая-нибудь из строк повторяется к каждом из 3 списков вынести ее в новый список list4
Тогда она не сможет быть одновременно в списке 1-2-3 - а значит не соответствует условиям.Код который дал @BAZAg хорош, но вот что будет если у тебя в списке 2 или 3 есть строка которой нет в списке 1 ? Насколько я понимаю в предложенном коде идет сравнение списка 1 со списками 2 и 3, а не каждого списка со всеми остальными. Или тебе нужно только первый сравнивать?
строка повторяется в каждом из 3 списков
Еще подскажи пожалуйста как правильно дополнить этот код если задача проверить 4 списка и результат вывести в 5.Тогда она не сможет быть одновременно в списке 1-2-3 - а значит не соответствует условиям.
Решается вот эта задача:
Добавить ещё один список просто и дополнительную проверку.Еще подскажи пожалуйста как правильно дополнить этот код если задача проверить 4 списка и результат вывести в 5.
var list1 = project.Lists["list1"];
var list2 = project.Lists["list2"];
var list3 = project.Lists["list3"];
var list4 = project.Lists["list4"];
var list5 = project.Lists["list5"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check_1 = list2.Contains(s);
bool check_2 = list3.Contains(s);
bool check_3 = list4.Contains(s);
if(check_1 && check_2 && check_3) hash.Add(s);
}
if(hash.Count > 0) list5.AddRange(hash);
сравнить 2 списка, делаю такой код, но не получаю результатаДобавить ещё один список просто и дополнительную проверку.
C#:var list1 = project.Lists["list1"]; var list2 = project.Lists["list2"]; var list3 = project.Lists["list3"]; var list4 = project.Lists["list4"]; var list5 = project.Lists["list5"]; var hash = new HashSet<string>(); foreach(string s in list1) { bool check_1 = list2.Contains(s); bool check_2 = list3.Contains(s); bool check_3 = list4.Contains(s); if(check_1 && check_2 && check_3) hash.Add(s); } if(hash.Count > 0) list5.AddRange(hash);
Вот добивил демо-данные.сравнить 2 списка, делаю такой код, но не получаю результата
var list1 = project.Lists["list1"];
var list2 = project.Lists["list2"];
var list3 = project.Lists["list3"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check_1 = list2.Contains(s);
if(check_1) hash.Add(s);
}
if(hash.Count > 0) list3.AddRange(hash);
где моя ошибка?
var list1 = project.Lists["list1"];
list1.Add("ss");
list1.Add("s");
list1.Add("p");
var list2 = project.Lists["list2"];
list2.Add("ss");
list2.Add("r");
var list3 = project.Lists["list3"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check = list2.Contains(s);
if(check) hash.Add(s);
}
if(hash.Count > 0) list3.AddRange(hash);
такой кодВот добивил демо-данные.
Вижу, что результат забрасывает в третий корректно.
Посмотреть вложение 118859C#:var list1 = project.Lists["list1"]; list1.Add("ss"); list1.Add("s"); list1.Add("p"); var list2 = project.Lists["list2"]; list2.Add("ss"); list2.Add("r"); var list3 = project.Lists["list3"]; var hash = new HashSet<string>(); foreach(string s in list1) { bool check = list2.Contains(s); if(check) hash.Add(s); } if(hash.Count > 0) list3.AddRange(hash);
В том, что в списке list1 нет строчек, которые есть в list2.В чем может быть проблема?
Спасибо, все работает. Можете еще подсказать код на случай
лист1 и лист2 - выводить строчки из лист1 которых нет в лист2 в лист3
var list1 = project.Lists["list1"];
var list2 = project.Lists["list2"];
var list3 = project.Lists["list3"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check = list2.Contains(s);
if(!check) hash.Add(s);
}
if(hash.Count > 0) list3.AddRange(hash);
не выводить результат( в листе 1 есть строки которые повторяются и которых нет в лист 2.C#:var list1 = project.Lists["list1"]; var list2 = project.Lists["list2"]; var list3 = project.Lists["list3"]; var hash = new HashSet<string>(); foreach(string s in list1) { bool check = list2.Contains(s); if(!check) hash.Add(s); } if(hash.Count > 0) list3.AddRange(hash);
Подскажи пожалуйста в чем проблема. очень необходим этот кодC#:var list1 = project.Lists["list1"]; var list2 = project.Lists["list2"]; var list3 = project.Lists["list3"]; var hash = new HashSet<string>(); foreach(string s in list1) { bool check = list2.Contains(s); if(!check) hash.Add(s); } if(hash.Count > 0) list3.AddRange(hash);
Я подставил демо данные и вижу, что решение работает корректно для случая:не выводить результат( в листе 1 есть строки которые повторяются и которых нет в лист 2.
код отрабатывает , но не создает 3й лист с результатом
лист1 и лист2 - выводить строчки из лист1 которых нет в лист2 в лист3
var list1 = project.Lists["list1"];
list1.Add("ss");
list1.Add("s");
list1.Add("p");
var list2 = project.Lists["list2"];
list2.Add("ss");
list2.Add("r");
var list3 = project.Lists["list3"];
var hash = new HashSet<string>();
foreach(string s in list1) {
bool check = list2.Contains(s);
if(!check) hash.Add(s);
}
if(hash.Count > 0) list3.AddRange(hash);