2018-08-02 22:04:49 +03:00
< html > < head > < object type = "application/x-oleobject" classid = "clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" >
< param name = "Keyword" value = "GroupJoin" >
< / object > < meta http-equiv = "Content-Type" content = "text/html; charset=windows-1251" > < title > < / title > < link rel = "StyleSheet" href = "../../../default.css" > < / head >
< body >
2025-11-07 16:12:31 +03:00
< H1 > Метод GroupJoin< / H1 > < h2 > Описание методов< / h2 > < p > Методы приведены для последовательности < code > < b > sequence of< / b > T< / code > .< / p > < table >
2018-08-02 22:04:49 +03:00
< tr > < td >
< code > < b > function < / b > GroupJoin< TInner,Key,Res> (inner: < b > sequence of< / b > TInner; outerKeySelector: T-> Key; innerKeySelector: TInner-> TKey; resultSelector: (T,< b > sequence of< / b > TInner)-> Res): < b > sequence of< / b > Res;< / code >
2025-11-07 16:12:31 +03:00
< br > Объединяет две последовательности на основе равенства ключей и группирует результаты. Затем функция resultSelector проектирует ключ и последовательность соответствующих ему значений на элемент результирующей последовательности.
2018-08-02 22:04:49 +03:00
< / td > < / tr >
< tr > < td >
< code > < b > function < / b > GroupJoin< TInner,Key,Res> (inner: < b > sequence of< / b > TInner; outerKeySelector: T-> Key; innerKeySelector: TInner-> TKey; resultSelector: (T,< b > sequence of< / b > TInner)-> Res; comparer: IEqualityComparer< Key> ): < b > sequence of< / b > Res;< / code >
2025-11-07 16:12:31 +03:00
< br > Объединяет две последовательности на основе равенства ключей и группирует результаты. Для сравнения ключей используется указанный компаратор. Затем функция resultSelector проектирует ключ и последовательность соответствующих ему значений на элемент результирующей последовательности.
2018-08-02 22:04:49 +03:00
< / td > < / tr >
< / table >
2025-11-07 16:12:31 +03:00
< h2 > Пример < / h2 > < blockquote > < code > < strong > begin< / strong > < br > < strong > var< / strong >
people := Arr((1,'Иванов'),(2,'Попов'),(3,'Сидоров'));< br > < strong > var< / strong >
subjects := Arr((1,'История'),(1,'Математика'),(2,'История')< br >
,(3,'Математика'),(1,'Русский'),(2,'Физика'));< br > < br >
2018-08-02 22:04:49 +03:00
people.GroupJoin(subjects,p-> p[0],s-> s[0],(p,ss)-> (p[1],ss.Select(x-> x[1]))).Println(NewLine);< br >
2025-11-07 16:12:31 +03:00
< strong > end< / strong > .< br > < br > Вывод:< br > (Иванов,[История,Математика,Русский])< br >
(Попов,[История,Физика])< br > (Сидоров,[Математика])< / code > < / blockquote >
2018-08-02 22:04:49 +03:00
< / body >