CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var data = GenData();
string searchKeyWord = "Jo";
//Linq Join
/*var result = from c in data.memberToPapers
join s in data.members on c.MemberId equals s.id
where c.Role == "TestRole1"
select new {
ConferenceId = c.ConferenceId,
PaperId = c.PaperId,
Role = c.Role,
JoinedName = s.Name
};*/
//Lambda Join
var result = data.memberToPapers
.Where(y => y.Role == "TestRole1" )
.Join(data.members, c => c.MemberId, s => s.id, (c, s) => new
{
ConferenceId = c.ConferenceId,
PaperId = c.PaperId,
Role = c.Role,
JoinedName = s.Name
});
foreach(var m in result)
{
Console.WriteLine("Before Where Result: ( ConferenceId = {0}, PaperId = {1}, Role = {2}, JoinedName = {3} )", m.ConferenceId.ToString(), m.PaperId.ToString(), m.Role, m.JoinedName);
}
Console.WriteLine("=====================");
if(!string.IsNullOrEmpty(searchKeyWord))
{
result = result.Where(x => x.JoinedName.Contains(searchKeyWord));
}
foreach(var m in result)
{
Console.WriteLine("After Where Result: ( ConferenceId = {0}, PaperId = {1}, Role = {2}, JoinedName = {3} )", m.ConferenceId.ToString(), m.PaperId.ToString(), m.Role, m.JoinedName);
}
}
public static TestDataSet GenData()
{
TestDataSet ret = new TestDataSet();
ret.members.Add(new Members()
{
id = 1,
Name = "John"
});
ret.members.Add(new Members()
{
id = 2,
Name = "Gino"
});
ret.members.Add(new Members()
{
id = 3,
Name = "Phill"
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 1,
PaperId = 2,
Role = "TestRole1",
MemberId = 1
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 1,
PaperId = 3,
Role = "TestRole1",
MemberId = 1
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 2,
PaperId = 5,
Role = "TestRole2",
MemberId = 2
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 1,
PaperId = 9,
Role = "TestRole3",
MemberId = 3
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 3,
PaperId = 88,
Role = "TestRole2",
MemberId = 3
});
ret.memberToPapers.Add(new MemberToPapers()
{
id = 1,
ConferenceId = 2,
PaperId = 7,
Role = "TestRole1",
MemberId = 2
});
return ret;
}
}
public class TestDataSet
{
public List<MemberToPapers> memberToPapers;
public List<Members> members;
public TestDataSet()
{
memberToPapers = new List<MemberToPapers>();
members = new List<Members>();
}
}
public class MemberToPapers
{
public int id {get;set;}
public int ConferenceId {get;set;}
public int PaperId {get;set;}
public string Role {get;set;}
public int MemberId {get;set;}
}
public class Members
{
public int id {get;set;}
public string Name {get;set;}
}