C#

LINQ Inner Join 사용법

지오준 2021. 7. 22.
반응형

Inner Join(내부조인)는 모든 테이블에 일치하는 데이터가 존재하는 경우에만 데이터를 반환합니다.

샘플코드는 UserGroup테이블과 User테이블간에 ID가 일치하는 데이터만 반환하는것을 확인할 수 있습니다.

Seventeen의 경우에는 UserGroup테이블에는 존재하지만  User테이블에 존재하지 않으므로 반환된 데이터에 확인이 안됩니다.

/// <summary>
/// Group정보 클래스
/// </summary>
class UserGroup
{
	public string GroupName { get; set; }
	public string UserGroupID { get; set; }
}

/// <summary>
/// User정보 클래스
/// </summary>
class User
{
	public string UserName { get; set; }
	public string UserGroupID { get; set; }
}

static void Main(string[] args)
{
	//Group클래스 샘플데이터
	List<UserGroup> UserGroups = new List<UserGroup>()
	{
		new UserGroup{GroupName="Bts",  UserGroupID="1"},
		new UserGroup{GroupName="Shinee",  UserGroupID="2"},
		new UserGroup{GroupName="Tvxq", UserGroupID="3"},
		new UserGroup{GroupName="Twice", UserGroupID="4"},
		new UserGroup{GroupName="Seventeen", UserGroupID="5"},
	};

	// User클래스 샘플데이터
	List<User> Users = new List<User>()
	{
		new User(){UserName="V", UserGroupID="1"},
		new User(){UserName="SUGA", UserGroupID="1"},
		new User(){UserName="JIN", UserGroupID="1"},
		new User(){UserName="KEY", UserGroupID="2"},
		new User(){UserName="MINHO", UserGroupID="2"},
		new User(){UserName="CHANGMIN", UserGroupID="3"},
		new User(){UserName="MINA", UserGroupID="4"},
		new User(){UserName="SANA", UserGroupID="4"},
		new User(){UserName="MOMO", UserGroupID="4"},
	};

	//Inner Join 쿼리
	var innerJoinQuery =
		from userGroup in UserGroups
		join user in Users on userGroup.UserGroupID equals user.UserGroupID
		select new { UserGroupID = userGroup.UserGroupID, GroupName = userGroup.GroupName, UserName = user.UserName };

	Console.WriteLine("InnerJoin Query");
	//UserGroup테이블과 User테이블에 모두 존재하는 데이터만 반환
	foreach (var item in innerJoinQuery)
	{
		Console.WriteLine("({0}-{2}){1}", item.GroupName, item.UserName, item.UserGroupID);
	}
	Console.ReadKey();
}

결과값

LinqSample8.zip
0.20MB

반응형

댓글