现在的位置: 网页制作教程网站制作教程 >正文
美文欣赏

Linq to DataSet(三)

发表于2017/3/9 网站制作教程 0条评论 ⁄ 热度 983℃

单表查询

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();
  • 暂无评论