По вашему вопросу я думаю, что могу предположить, что у вас определены следующие переменные:
Lookup[]
(массив поиска) IEnumerable<Record>
(результатывозвращается по вашему запросу)
... и типы выглядят примерно так:
public class Lookup
{
public int Index { get; set; }
public int Value { get; set; }
}
public class Record
{
public int Value { get; set; }
/* plus other fields */
}
Тогда вы можете решить свою проблему несколькими способами.
Сначала используйте анонимный тип:
var matches
= from r in records
join l in lookups on r.Value equals l.Value
group r by l.Index into grs
select new
{
Index = grs.Key,
Records = grs.ToArray(),
};
Два других просто используют стандартный LINQ GroupBy
& ToLookup
:
IEnumerable<IGrouping<int, Record>> matches2
= from r in records
join l in lookups on r.Value equals l.Value
group r by l.Index;
ILookup<int, Record[]> matches3
= matches2.ToLookup(m => m.Key, m => m.ToArray());
Решают ли они вашу проблему?