나 자신 LINQ이 패턴을 많이 사용 찾을 수 :이 LINQ의 메서드 구문은 무엇입니까? 조인입니까? 그렇지 않으면 무엇입니까?
이class Thing
{
public int ID { get; set; }
public int ColorID { get; set; }
}
class Color
{
public int ID { get; set; }
public string Description { get; set; }
}
static void Main()
{
var things = new List<Thing> { new Thing { ID = 1, ColorID = 1 }, new Thing { ID = 2, ColorID = 1 }, new Thing { ID = 3, ColorID = 2 }, new Thing { ID = 4, ColorID = 1 } };
var colors = new List<Color> { new Color { ID = 1, Description = "red" }, new Color { ID = 2, Description = "green" }, new Color { ID = 3, Description = "blue" } };
var joined = (from thing in things
from color in colors
where thing.ColorID == color.ID
select new { ID = thing.ID, Color = color.Description }).ToArray();
foreach (var thing in joined)
{
Console.WriteLine("(" + thing.ID + ", " + thing.Color + ")");
}
//Writes:
//(1, red)
//(2, red)
//(3, green
//(4, red)
}
그것의 핵심은, 쿼리 구문의 네 줄은 매우 INNER JOIN
같은 내가 TSQL 쓸 수 있다고 생각하지만 난 examples of LINQ query syntax for joins 볼 때 위의 LINQ는 그렇지 않지만 join
이라는 단어를 사용하십시오.
위의 LINQ가 수행하는 '조인'은 무엇이고 LINQ 메서드 구문으로 어떻게 다시 작성합니까?
감사합니다. 전 LINQ 독점적으로 쿼리 구문을 작성하여 시작했지만 최근에 나는 그것이 더 명확하고 더 많은 C#을 같은 방법 구문으로 스와핑했지만,이 경우에는 무슨 일이 일어나는지 설명하는 데 도움이되지만 훨씬 덜 간단합니다. – dumbledad
나는 내부 루프 조인을 수행한다고 답변하려고했다. 구문은 SQL-89에서 내부 조인을 작성하는 방법과 매우 비슷합니다. 하지만 당신은 그렇지 않다고 말합니다. – Magnus
@Magnus : LINQ to SQL에 의해 "내부 루프 조인"으로 변환 될 수 있습니다. 물론 ... –