Начиная с простого представления в коде того, что у вас есть в картине:
var list = new[]
{
new{code = 100, value = 1, group = 1},
new{code = 101, value = 2, group = 1},
new{code = 100, value = 3, group = 2},
new{code = 103, value = 4, group = 2},
};
var inp = new[]{100, 103};
Тогда мы можем сделать:
list
.GroupBy(el => el.group) // Group by the "group" field.
.Where(grp => !inp.Except(grp.Select(el => el.code)).Any()) // Exclude groups that don't contain all input values
.Single() // Obtain the only such group (with a check that there is only one)
.Select(el => el.value); // Obtain the "value" fields.
Если бы вы, возможно, есть материалы, которые были подмножеством «коды» некоторых групп, вы также можете проверить, что вы полностью сопоставляете всю группу, исключая группы, которые имеют разный размер:
list
.GroupBy(el => el.group)
.Where(grp =>
grp.Count() == inp.Count()
&& !inp.Except(grp.Select(el => el.code)).Any())
.Single()
.Select(el => el.value);
Существуют и другие варианты, которые соответствуют другим возможным интерпретациям вашего вопроса (например, Я предполагаю, что может быть только одна соответствующая группа, но это было непонятно).
Как ваши данные "100 и 101" точно? Какова структура данных здесь? Это поможет, если вы предоставите короткий, но полный пример кода. Кроме того, каковы были бы значения, если бы была также * строка «code = 101, value = 5, group = 2»? А если бы была строка «code 102, value = 6, group = 1»? Непонятно, чего вы пытаетесь достичь. –
Ввод является перечислимым с значениями bouth, остальное не важно для вопроса, потому что вы можете иметь тысячи переменных, мне просто нужно добиться этого результата. Если в будущем появятся другие данные, я обработаю его. Благодаря.! – Yogurtu
Я прав, думая, что с таблицей у вас здесь единственные входы, которые вы когда-либо имели, были бы '100' и' 101' или '100' &' 103'? То есть, у вас никогда не будет входа, который не был бы полной группой? Кроме того, вы могли бы создать группу, которая идеально соответствовала бы другой группе? (например, могут существовать строки с '100: 5: 3' и' 101: 6: 3', что означает, что группа 3 также соответствует)? –