【使用var创建隐型局部变量】
在C#后期版本中声明变量可以不明确指定变量的数据类型,可以使用var关键字声明。
如果使用var声明查询变量,那么必须使用var作为查询变量进行循环访问的foreach语句中迭代变量的类型。
static void Main(string[] args)
{
string[] strWords = { "MingRi", "XiaoKe", "MRBccd" };//定义字符串数组
//定义隐型查询表达式
var ChangeWord =
from word in strWords
select new { Upper = word.ToUpper(), Lower = word.ToLower() };
//循环访问隐型查询表达式
foreach (var vWord in ChangeWord)
{
Console.WriteLine("大写: {0}, 小写: {1}", vWord.Upper, vWord.Lower);//输出转换后的单词
}
Console.ReadLine();
}
【Lambda表达式的使用】
使用Lambda运算符 => ,读作goes to。
//输入参数(如果有)=> 表达式
(input parameters)=> expression
static void Main(string[] args)
{
//声明一个数组并初始化
string[] strLists = new string[] { "明日科技", "C#编程词典", "C#编程词典珍藏版" };
//使用Lambda表达式查找数组中包含“C#”的字符串
string[] strList = Array.FindAll(strLists, s => (s.IndexOf("C#") >= 0));
//使用foreach语句遍历输出
foreach (string str in strList)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
【LINQ查询表达式】
包含8个基本子句:from、select、group、where、orderby、join、let、into。
static void Main(string[] args)
{
//定义一个字符串数组
string[] strName = new string[] { "明日科技","C#编程词典","C#从基础到项目实战","C#范例手册" };
//定义LINQ查询表达式,从数组中查找长度小于7的所有项,IEnumerable类的where方法
IEnumerable<string> selectQuery =
from Name in strName
where Name.Length<7
select Name;
//执行LINQ查询,并输出结果
foreach (string str in selectQuery)
{
Console.WriteLine(str);
}
Console.ReadLine();
}
【使用LINQ操作SQL Server数据库】
1.使用LINQ查询SQL Server数据库
首先需要创建LinqToSql类文件。
1)建立目标框架为Framework SDK 4.6的项目
2)右键项目,添加新项。
3)在“服务器资源管理器”中连接SQL Server数据库,然后将指定的表拖入设计视图。
开发一个程序,用combox控件筛选查询条件,textbox输入查询内容,datagridview显示查询的内容。
//首先创建linqtosql类文件,DataClasses1DataContext
//在类中声明变量
string strCon = "server=.;database=db_test1;uid=sa;pwd=144159";
DataClasses1DataContext linq;//声明linq连接对象
private void Form1_Load(object sender, EventArgs e)
{
slt();//加载事件中调用slt方法
}
/// <summary>
/// 定义查询方法
/// </summary>
private void slt()
{
linq = new DataClasses1DataContext(strCon);//创建连接对象
//如果没有查询关键字,直接显示表内容
if(textBox1.Text=="" )
{
//查询表内容
var result = from inslt in linq.db_table5
select new
{
inslt.姓名,
inslt.电话,
inslt.邮政编码,
inslt.住址
};
dataGridView1.DataSource = result;//将result绑定在控件
}
else
{
switch(comboBox1.Text)
{
case "姓名":
var resultname = from inslt in linq.db_table5
where inslt.姓名 == textBox1.Text
select new
{
inslt.姓名,
inslt.电话,
inslt.邮政编码,
inslt.住址
};
dataGridView1.DataSource = resultname;
break;
case "邮政编码":
var resultnum = from inslt in linq.db_table5
where inslt.邮政编码.ToString() == textBox1.Text
select new
{
inslt.姓名,
inslt.电话,
inslt.邮政编码,
inslt.住址
};
dataGridView1.DataSource = resultnum;
break;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
slt();//button调用slt方法
}
2.使用LINQ管理SQL Server数据库
1)添加数据
InsertOnSubmit方法:将处于pending insert状态的实体添加到SQL数据表中。
SubmitChanges方法:记录变更的对象,并更新到数据表中。
linq.goods.InsertOnSubmit(good);//调用InsertOnSubmit添加信息
linq.SubmitChanges();//更新到库中
2)修改数据
SubmitChanges方法
3)删除数据
DeleteAllOnSubmit方法和SubmitChanges方法。
【使用LINQ操作其他数据】
1.使用LINQ操作数组和集合
使用LINQ to Objects技术
static void Main(string[] args)
{
int[] intScores = { 45, 68, 80, 90, 75, 76, 32 };//定义int类型的一维数组
//使用LINQ技术从数组中查找及格范围内的分数
var score = from hgScroe in intScores
where hgScroe >= 60
orderby hgScroe ascending//按升序排序
select hgScroe;
Console.WriteLine("及格的分数:");
foreach (var v in score)//循环访问查询结果并显示
{
Console.WriteLine(v.ToString());
}
Console.ReadLine();
}
2.使用LINQ操作DataSet数据集
使用LINQ to DataSet技术
1)AsEnumerable方法:将DataTable对象转换为EnumerableRowCollection对象
2)CopyToDataTable方法:将IEnumerable对象中的数据赋值到DataTable对象中
3)AsDataView方法:创建并返回支持LINQ的DataView对象。
4)Take方法:用来从序列的开头返回指定数量的连续元素
5)Sum方法:计算数值序列和。
private void Form1_Load(object sender, EventArgs e)
{
string strCon = "Data Source=mrwxk\\mrwxk;Database=db_CSharp;Uid=sa;Pwd=;";//定义数据库连接字符串
SqlConnection sqlcon;//声明SqlConnection对象
SqlDataAdapter sqlda;//声明SqlDataAdapter对象
DataSet myds;//声明DataSet数据集对象
sqlcon = new SqlConnection(strCon);//实例化数据库连接对象
sqlda = new SqlDataAdapter("select * from tb_Salary", sqlcon);//实例化数据库桥接器对象
myds = new DataSet();//实例化数据集对象
sqlda.Fill(myds, "tb_Salary");//填充DataSet数据集
var query = from salary in myds.Tables["tb_Salary"].AsEnumerable()//使用LINQ从数据集中查询所有数据
select salary;
DataTable myDTable = query.CopyToDataTable<DataRow>();//将查询结果转化为DataTable对象
dataGridView1.DataSource = myDTable;//显示查询到的数据集中的信息
}
3.使用LINQ操作XML
使用LINQ to XML技术
1)XElement类的Load方法:Xelement类表示一个XML元素,Load方法用来从文件中加载Xelement。
2)XElement类的SetAttributeValue方法:用来设置属性的值、添加属性或删除属性
3)XElement类的Add方法:将指定的内容添加为此XContainer的子级。
4)XElement类的ReplaceNodes方法:用来将指定的内容替换此文档或元素的子节点
5)XElement类的Save方法:用来序列化此元素的基础XML树,。可以将输出保存到文件、XMLTextWriter、TextWriter或XmlWriter。
6)XDocument类的Save方法:XDocument表示XML文档,其Save方法用来将此XDocument序列化为文件、TextWriter或XmlWriter。
7)XDeclaration类表示一个XML声明。