首先我们还是先建立一个person.cs类
public class person
{
public string name
{ get; set; }
public int age
{ get; set; }
public string sex
{ get; set; }
}
接下来我们往这个person类添加数据:
List plist1 = new List();
plist1.Add(new person { name = "cxx1", age = , sex = "男" });
plist1.Add(new person { name = "www.baidu.com", age = , sex = "男" });
plist1.Add(new person { name = "www.52mvc.com", age = , sex = "男" });
List plist2 = new List();
plist2.Add(new person { name = "cxx1", age = , sex = "男" });
plist2.Add(new person { name = "cxx2", age = , sex = "男" });
plist2.Add(new person { name = "cxx4", age = , sex = "男" });
plist2.Add(new person { name = "cxx5", age = , sex = "男" });
// asp.net
var query = from person p in plist1
join person per in plist2
on p.name equals per.name
select new
{
名称=p.name,
性别=p.sex,
年龄=p.age
};
gd2.DataSource = query;
gd2.DataBind();
返回的结果是:
备注:这个方法是要查找出 plist1 与 plist2 之中,name名称有相同记录的数据。
接下来我们来看看sql中的左连接left join 在linq中如何实现
还是先来创建两个cs 类。
///
/// 手机列表
///
public class MobileStore
{
public string mobId
{ set; get; }
public string mobName
{ set; get; }
}
/// 手机销售表
///
public class MobileSale
{
public string Sid
{ set; get; }
public string mobId
{ set; get; }
public string mobName
{ set; get; }
public string price
{ set; get; }
}
List listStore = new List();
listStore.Add(new MobileStore { mobId = "", mobName = "N86" });
listStore.Add(new MobileStore { mobId = "", mobName = "N82" });
listStore.Add(new MobileStore { mobId = "", mobName = "N81" });
listStore.Add(new MobileStore { mobId = "", mobName = "N95" });
listStore.Add(new MobileStore { mobId = "", mobName = "N85" });
listStore.Add(new MobileStore { mobId = "", mobName = "N97" });
List listSale = new List();
listSale.Add(new MobileSale { Sid="" ,mobId="",mobName="N86",price=""});
listSale.Add(new MobileSale { Sid="", mobId = "", mobName = "N82",price="" });
listSale.Add(new MobileSale { Sid = "", mobId = "", mobName = "N81", price = "" });
var query = from MobileStore m in listStore
join MobileSale sale in listSale
on m.mobId equals sale.mobId into joinm
from j in joinm.DefaultIfEmpty()
select new
{
ID = m.mobId,
名称 = m.mobName,
价格 = j == null ? "暂无数据" : j.price,
};
gd.DataSource = query;
gd.DataBind();