#c#
#c#
Вопрос:
У меня есть словарь и список данных и
-
Мне нужны только данные из списка данных
lstData
, еслиType
они существуют в словаре. -
и мне нужно заменить
Type
имяlstData
на имя в словаре.type1
с помощью «X» иtype3
сtype3
помощью .var dictionary = new Dictionary<string, string> { { "type1", "X" }, { "type3", "type3" } }; var lstData = new List<Data> { new Data {Name = "N1", Type = "type1"}, new Data {Name = "N1", Type = "type2"}, new Data {Name = "N2", Type = "type3"}, };
С помощью приведенного ниже запроса я могу выполнить часть 1), как выполнить часть 2)?
var x = lstData.Where(a => new List<string>(dictionary.Keys).Any(b => b == a.Type));
Ожидаемый результат должен быть,
x = new List<Data>
{
new Data {Name = "N1", Type = "X"},
new Data {Name = "N2", Type = "type3"},
};
Ответ №1:
Использование ContainsKey
будет более эффективным, особенно для больших наборов данных.
Затем вы можете использовать Select
для создания своих новых Data
объектов:
var x = listData
.Where(d => dictionary.ContainsKey(d.Type)) // Part 1
.Select(d => new Data { Name = d.Name, Type = dictionary[d.Type] }) // Part 2
.ToList();