单表查询
DataTable dt = ds.Tables["Product"];
var query =
// 调用AsEnumerable方法,使DataTable对象支持LINQ查询
from r in dt.AsEnumerable()
// 使用DataRow中的字段使用Field方法,Field为泛型,访问格式:.Field<类型>("字段名")
where r.Field("cid") == 2
select new
{
id = r.Field("id"),
name = r.Field("name"),
cid = r.Field("cid")
};
foreach (var p in query)
{
string msg = string.Format("id:{0}, name;{1}, cid:{2}", p.id, p.name, p.cid);
listBox1.Items.Add(msg);
}
连接查询
DataTable dt_p = ds.Tables["Product"];
DataTable dt_c = ds.Tables["classify"];
var query =
from c in dt_c.AsEnumerable()
join p in dt_p.AsEnumerable() on c.Field("id") equals p.Field("cid")
select new
{
id = p.Field("id"),
name = p.Field("name"),
cid = p.Field("cid"),
cname = c.Field("name")
};
foreach (var p in query)
{
string msg = string.Format("id:{0}, name;{1}, cid:{2},cname:{3}", p.id, p.name, p.cid, p.cname);
listBox1.Items.Add(msg);
}
GroupJoin
Linq to SQL
首先建立Linq to SQL类
// Linq to SQL类:包含分类表classify和产品表product
lq1DataContext lq1 = new lq1DataContext();
// 获取所有分类
var query = from c in lq1.classify select c;
foreach (var c in query)
{
// 注意c.product为该分类的产品集合
foreach(var p in c.product)
{
// 注意p.classify.name为该产品的分类名
string msg = string.Format("id:{0}, 名称;{1},分类:{2},", p.id, p.name, p.classify.name);
listBox1.Items.Add(msg);
}
}
删除数据
lqDataContext lq1 = new lqDataContext();
// 方法一
// 删除id为100的产品
// Delete_Product为附加到lqDataContext上的存储过程
lq1.Delete_Product(100);
// 方法二
// 首先找到这条记录
product pdt =
(from p in product
where p.id == 100
select p).first();
// 从客户端缓存删除这条记录
lq1.product.DeleteOnSubmit(pdt);
// 执行删除
lq1.SubmitChanges();
修改数据
lqDataContext lq1 = new lqDataContext();
// 方法一:存储过程
// 参数分别为:产品id, 名称, 价格, 数量, 分类id
lq1.Update_Product(100, "耐克", 99, 33, 2);
// 方法二
// 首先找到这条记录
product pdt =
(from p in product
where p.id == 100
select p).first();
// 修改这条记录
pdt.name = "耐克";
pdt.price = 99;
pdt.number = 33;
pdt.cid = 2;
// 执行删除
lq1.SubmitChanges();
添加数据
lqDataContext lq1 = new lqDataContext();
// 方法一:存储过程
// 方法二
product pdt = new product();
pdt.id = 100
pdt.name = "耐克";
pdt.price = 99;
pdt.number = 33;
pdt.cid = 2;
lq1.product.InsertOnSubmit(p);
lq1.SubmitChanges();