[SQL] 카티 제품을 할 수있는 좋은 LINQ의 방법이 있습니까?
SQL카티 제품을 할 수있는 좋은 LINQ의 방법이 있습니까?
그래서 같은 클래스 구조를 가지고 :
Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
한 사람이있다. 그는 1..N 개를 가지고있다. 각 개는 1..N 강아지가 있습니다.
나는 각 개에서 1 개 강아지를 복용, 강아지의 가능한 조합 모두의 목록을합니다. 예 :
개 1 강아지 A, 강아지 2 강아지 A를 1 개 강아지 A, 2 개 강아지 B 1 개 강아지 B, 2 개 강아지 1 개 강아지 B, 2 개 강아지 B
이 SQL 테이블에있는 경우, 나는 테이블 '곱셈'에 다음과 같은 일을 할 것입니다 :
select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
이 좀 일을 몇 가지 LINQ 틱 방법이 있나요 ???
정말 고마워
해결법
-
==============================
1.내가 질문을 이해한다면, 당신은 강아지의 N 세트의 직교 제품합니다.
내가 질문을 이해한다면, 당신은 강아지의 N 세트의 직교 제품합니다.
당신이 얼마나 많은 세트 컴파일시에 알고있는 경우에 직교 제품을 쉽게 얻을 수 있습니다 :
from p1 in dog1.Puppies from p2 in dog2.Puppies from p3 in dog3.Puppies select new {p1, p2, p3};
가정하자 dog1는 dog2는 강아지 P21을 가지고 있으며, dog3은 P32를 강아지 P31을 가지고, 강아지 P11, P12있다. 이것은 당신을 제공합니다
{p11, p21, p31}, {p11, p21, p32}, {p12, p21, p31}, {p12, p21, p32}
어디에서 각 행은 익명의 유형입니다. 당신은 얼마나 많은 세트를 컴파일 타임에 알 수없는 경우, 당신은 약간 더 많은 작업과 그 작업을 수행 할 수 있습니다. 주제에 내 문서를 참조하십시오
http://ericlippert.com/2010/06/28/computing-a-cartesian-product-with-linq/
이 StackOverflow의 질문 :
가능한 모든 조합을 생성
당신이 방법을 일단 곱 집합
당신은 말할 수 CartesianProduct(from dog in person.Dogs select dog.Puppies)
얻을 수
{p11, p21, p31}, {p11, p21, p32}, {p12, p21, p31}, {p12, p21, p32}
어디에서 각 행은 강아지의 순서이다.
이해가?
-
==============================
2.dogs.Join (강아지 () => 진실 () => 진실 (하나, 둘) => 새로운 튜플 (하나, 둘));
dogs.Join (강아지 () => 진실 () => 진실 (하나, 둘) => 새로운 튜플 (하나, 둘));
당신은 정기적으로 가입 할 수 있지만 내가 모든 조합이 유효 원하기 때문에 선택기는 모두 같은 값을 반환한다. 조합 할 때, 하나의 튜플 (또는 사용자가 선택한 다른 데이터 구조)에 모두 넣어.
-
==============================
3.당신이 강아지와 강아지의 모든 가능한 조합을 원하는 경우에, 당신은 십자가에 가입 할 것입니다 :
당신이 강아지와 강아지의 모든 가능한 조합을 원하는 경우에, 당신은 십자가에 가입 할 것입니다 :
from dog in Dogs from puppy in Puppies select new { Dog = dog, Puppy = puppy }
from https://stackoverflow.com/questions/4073713/is-there-a-good-linq-way-to-do-a-cartesian-product by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 MySQL의에서 행 생성기를해야합니까? (0) | 2020.03.20 |
---|---|
[SQL] T-SQL 동적 피벗 (0) | 2020.03.20 |
[SQL] 열 이름으로 다른 값으로 열을 동적 행 값을 선택 MYSQL (0) | 2020.03.20 |
[SQL] 정확히 테이블 이름 주위의 인용 부호는 무엇을해야합니까? (0) | 2020.03.19 |
[SQL] rewriteBatchedStatements와 MySQL과 JDBC = TRUE (0) | 2020.03.19 |