(delegate (string str) { return str.Length}) //匿名方法
(string str) =>{ return str.Length} //Lambda语句
(string str) =>str.Length //Lambda表达式
(str) =>str.Lenth//省略类型,让IDE去判断
str =>str.Lenth //去掉括号
Linq *** 作的是数据对象,所以需要先建立一个实体对象模型, *** 作的表如下
USE [IBBC]
GO
CREATE TABLE [Table_1](
IDD INT PRIMARY KEY NOT NULL,
Nnmae VARCHAR(15) NULL
)
INSERT [dbo].[Table_1] ([IDD], [Nnmae]) VALUES (100, N'清高祖'),(102, N'清高宗'),
(103, N'清太祖'),(104, N'Test1'),
(105, N'Test2'),(106, N'Test3'),
(107, N'Test4'),(108, N'Test5')
查询:
public void Dbquery(int id)
{
IBBCEntities db = new IBBCEntities() var request = from d in db.Table_1 where d.IDD == id select new { d.IDD, d.Nnmae }
foreach (var item in request)
{
Console.WriteLine("查询语法: " + item)
} var request1 = db.Table_1.SingleOrDefault(b =>b.IDD == id)
Console.WriteLine("(SQO)方法语法: " +request1.IDD+" "+request1.Nnmae)
Console.ReadKey()
}
添加:
//添加:
var add1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010) if (add1.IDD.Tostring()==null)
{
Table_1 tb = new Table_1
{
IDD = 1010,
Nnmae = "张三丰"
}
db.Table_1.Add(tb)
db.SaveChanges()
}
(PS:add1.IDD为Int类型,所以永远不会等于null,故取其ToString(),下同))
修改:
//修改var update1 = db.Table_1.SingleOrDefault(c =>c.IDD == 1010)if (update1.IDD.Tostring()!=null)
{
update1.Nnmae = "张君宝"
db.SaveChanges()
}
删除:
//删除
var delete1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010)if (delete1.IDD.Tostring()!=null)
{
db.Table_1.Remove(delete1)
db.SaveChanges()
}
)。但是,LINQ TO SQL不是万能的。例如,你在重新修改或设计数据库表格后,原先使用LINQ TO SQL生成的DATACONTEXT类并不会自动更新。因此,针对这些更改之后的 *** 作,需要特别注意。二、问题描述[一]本文中首先记录的是使用LINQ插入数据库记录时涉及的一个基本概念级问题。请看下面的代码片断:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (dt.Table3.Count() != 0)//{// Table3 u = dt.Table3.First(m =>m.abc == UserName)//if (u != null)//{dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()//}//}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false//(2)}}上述代码的意思是,在表格Table3 中先删除可能存在的符合条件的记录,然后在此表格中再插入一条记录数据。上面的代码将“可能”引发异常,将流程控制转向(2)处。这些“可能”在于,数据表格Table3 中最初无记录,则必引发异常;如果有记录,则一切符合既定 *** 作要求。于是,修改上面的代码为如下:public bool InsertUserStatus(string UserName){eMailDataContext dt = new eMailDataContext()try{//删除可能存在的原有用户状态信息if (dt.Table3.Count() != 0)// (1){Table3 u = dt.Table3.First(m =>m.abc == UserName)if (u != null){dt.Table3.DeleteOnSubmit(u)dt.SubmitChanges()}}//创建新的用户状态信息Table3 userstatus = new Table3{abc = UserName}//插入到数据库表格UserStatus中dt.Table3.InsertOnSubmit(userstatus)dt.SubmitChanges()return true}catch (System.InvalidOperationException){return false}}也就是说,删除 *** 作前需要先判定数据表格是否记空--这可以通过红色的if语句((1)处)来实现。如此以来,无论表格中是否事先存在记录都可以往下执行可能的删除及插入 *** 作了。[二]再来看一个例子,例如: //删除旧的邮件public static void DeleteSubject(string UserName, string host){eMailDataContext dt = new eMailDataContext()string cmdText = "delete from MailDownloadTemp where UserName=" + "'"+UserName +"'"+ " and Host=" + "'"+host+"'"try{int result = dt.ExecuteCommand(cmdText)return}catch (System.InvalidOperationException){return}}上述 *** 作同样抛出异常。因此,需要同上面提到的那样,先进行数据库表格记录数据判断,再进行可能的删除 *** 作。因此,再修改上面代码,如下所示: //删除旧的邮件欢迎分享,转载请注明来源:内存溢出
评论列表(0条)