Я читал некоторые подобные сообщения, но многие просто спрашивают о вставке словарей в кортежи и наоборот. Моя проблема в том, что у меня есть два отдельных словаря, которые я хочу использовать для заполнения нового кортежа.C# - Вставка ключей или значений словаря в новый набор
В двух словарях есть общая информация, которая является электронной почтой пользователя. Словарь addressBook
содержит имя пользователя и адрес электронной почты пользователя. usersAndManagersList
содержит адрес электронной почты пользователя и адрес электронной почты менеджера. Я надеялся совместить два, а затем положить все бит информации в один кортеж, чтобы легко обойти это вместо двух словарей.
public static Tuple<string, string, string> allUserInformation(Dictionary<string, string> addressBook, Dictionary<string, string> usersAndManagersList)
{
Tuple<string, string, string> allUserInfo;
foreach (var thing in addressBook)
{
foreach (var that in usersAndManagersList)
{
if (thing.Value == that.Key)
{
var userName = thing.Key;
var userEmail = thing.Value;
var managerEmail = that.Value;
Console.WriteLine("User: {0}, User's Email: {1}, Manager's Email: {2}", userName, userEmail, managerEmail);
allUserInfo = Tuple.Create(userName, userEmail, managerEmail);
}
}
}
return allUserInfo;
}
Значения в addressBook
и ключи в usersAndManagersList
оба письма пользователей. Я пытался перебрать все, и если значения одного совпадают с ключами другого, то для создания кортежа будет использоваться адрес электронной почты пользователя, имя пользователя и адрес менеджера, а затем начнется в цикле.
Основные проблемы: Я застреваю, если я должен использовать петлю while
или if
. Я беспокоюсь о масштабах и где именно должен быть return
кортеж. Ошибка, которую я получил, это то, что я возвращаю пустой/неназначенный кортеж, который я понимаю, почему на основании того, где я его вернул, но я не уверен, как это исправить. Как создать этот кортеж с помощью правых петель и т. Д.? Заранее спасибо.
Ваш код не компилируется, пожалуйста, исправить. Я предполагаю, что вы хотите перебирать 'addressBook' и' usersAndManagersList', а не над значениями «Значения» и «Ключи» каждого из них, а также, что вы хотите сделать 'if (thing.Value == that.Key)', но Я не знаю точно. Кроме того, попробуйте использовать лучшие имена переменных, чем 'thing' и' that'. – Quantic
Вы должны просто взять адресную книгу и присоединиться к ней в userAndManagersList, а затем просто выбрать тупочку в селекторе результатов. –
Вы возвращаете 'Tuple', который будет иметь только один набор значений, I подумайте, что вам нужно вернуть 'IEnumerable >', в основном массив 'Tuple'. Вы также можете взглянуть на Linq, это может довольно кратко перечислять ваши данные и возвращать то, что вы хотите. –