Нет смысла иметь словарь, в котором ключ является комбинацией этих 3-х данных, если вам нужно получить данные только с 2-мя данными.
Как насчет непосредственного анализа списка?
var matchingPeople = listName.Where(p => p.firstname == "myfirstname" && p.lastname == "mylastname");
РЕДАКТИРОВАНИЕ: Затем вам нужно сделать это:
var listName = new List<People>
{
new People { firstname = "David", middlename = "Broom", lastname = "Lightning", value = 1 },
new People { firstname = "Dave", middlename = "Cak", lastname = "Londo", value = 2 },
new People { firstname = "Chris", middlename = "Vanglein", lastname = "Walls", value = 3 },
new People { firstname = "Rudy", middlename = "Affair", lastname = "Master", value = 4 }
};
var data = listName
.Where(x => x.value != 0)
.GroupBy(x => (x.firstname, x.middlename, x.lastname))
.ToDictionary(x => x.Key, x => x.ToList());
var myfirstname = "David";
var mylastname = "Broom";
var matchingPeople = data.Where(x => x.Key.firstname == myfirstname && x.Key.lastname == mylastname).SelectMany(x => x.Value);
Вам необходимо использовать .Where(...)
для фильтрации данных и .Select(...)
, чтобы выбрать .Value
часть словаря. Поскольку .Value
является списком, результатом будет List
из List
, поэтому используйте .SelectMany
вместо .Select
, чтобы объединить эти List
в один list
.