本节我们主要介绍一下如何创建查询集合类型,关系数据库类型,DataSet对象类型和XML类型的数据源的Linq查询表达式。

  下面在实例代码ReadyCollectionData()函数创建了准备的数据源:

1、创建集合类型的查询。

创建一个UserBaseInfo类:

  public class UserBaseInfo
{
private List<string> aliasname;
private int id;
private string email;
private int roleid;
private string username; public UserBaseInfo(int Id, string userName, string email, List<string> aliasName)
: this(Id, userName, email)
{ this.aliasname = aliasName;
} public UserBaseInfo(int Id, string userName, string email)
{
this.id = Id;
this.username = userName;
this.email = email;
} public UserBaseInfo(int Id, string userName, string email, int roleId)
: this(Id, userName, email)
{
this.roleid = roleId;
}
public UserBaseInfo(int Id, string userName, string email, int roleId, List<string> aliasName)
: this(Id, userName, email, roleId)
{
this.aliasname = aliasName;
} public List<string> AliasName
{
get { return this.aliasname; }
set { this.aliasname = AliasName; }
} public int ID
{
get { return this.id; }
set
{
this.id = ID;
}
} public string Email
{
get { return this.email; }
set { this.email = Email; }
} public int RoleId
{
get { return this.roleid; }
set { this.roleid = RoleId; }
} public string UserName
{
get { return this.username; }
set { this.username = UserName; }
}
}

ReadyCollectionData方法准备数据源:

 private void ReadyCollectionData()
{
//创建一个数组
int[] datasource = new int[]; for(int i=;i<;i++)
{
datasource[i] = i;
} //准备数据源创建一个泛型列表元素类型为UserBaseInfo
List<UserBaseInfo> users = new List<UserBaseInfo>(); for (int i = ; i < ; i++)
{
users.Add(new UserBaseInfo(i, "user0" + i.ToString(), "user0" + i.ToString() + "@web.com"));
}
}

下面我们来创建一个Linq查询表达式来查询出ID大于3的元素:

 //以下是创建Linq查询
var result = from u in users where u.ID >
select u;

最终的代码:

  private void ReadyCollectionData()
{
//创建一个数组
int[] datasource = new int[]; for (int i = ; i < ; i++)
{
datasource[i] = i;
} //准备数据源创建一个泛型列表元素类型为UserBaseInfo
List<UserBaseInfo> users = new List<UserBaseInfo>(); for (int i = ; i < ; i++)
{
users.Add(new UserBaseInfo(i, "user0" + i.ToString(), "user0" + i.ToString() + "@web.com"));
} //以下是创建Linq查询
var result = from u in users where u.ID >
select u; foreach (var u in result)
{
Response.Write("ID:" + u.ID + "</br>" + "username:" + u.UserName+"</br>");
} }

看看输出结果:

是不是已经完成过滤了。其实和sql的查询语句很像。

2、创建DataSet类型的查询表达式。

创建一个userinfo表,做默认数据如下:

然后我们的代码里面的函数ReadyDataSetData()用来获取userinfo表里面的数据,通过linq进行过滤。

 private void ReadyDataSetData()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LinqDBConnectionString"].ConnectionString); string cmdText = "SELECT * FROM UserInfo";
///创建执行SQL语句的命令
SqlDataAdapter da = new SqlDataAdapter(cmdText, con);
///打开数据库的连接
con.Open();
///执行查询操作
DataSet ds = new DataSet();
da.Fill(ds, "UserInfo");
con.Close(); //以下为linq查询表达式:
var result = from u in ds.Tables["userinfo"].AsEnumerable()
where u.Field<int>("id") >
select u; }

可以看出我们的代码中是过滤出 id大于5的元素。

看到查询结果和我们预想的一样。

3、创建sqlserver数据库类型的查询表达式。

我们依然用sql中的userinfo表

  private void ReadyDatabaseData()
{ ///准备数据源,创建LinqDB数据库的数据上下文类的实例
LinqDBDataContext db = new LinqDBDataContext(ConfigurationManager.ConnectionStrings["LinqDBConnectionString"].ConnectionString);
Table<userinfo> users = db.userinfo;
///以下为LINQ查询表达式 var result = from u in users
where u.id > && u.id <
select u;
}

看代码是过滤 id大于3且小于5的,那么就只有id为4的了。看结果:

4、最后一个查询,创建XML查询语句。

 private void ReadyXmlData()
{ ///准备数据源,创建XML类型的数据源
string xmlString =
"<Books>"
+ "<Book ID=\"101\">"
+ "<No>00001</No>"
+ "<Name>Book 0001</Name>"
+ "<Price>100</Price>"
+ "<Remark>This is a book 00001.</Remark>"
+ "</Book>"
+ "<Book ID=\"102\">"
+ "<No>00002</No>"
+ "<Name>Book 0002</Name>"
+ "<Price>200</Price>"
+ "<Remark>This is a book 00002.</Remark>"
+ "</Book>"
+ "<Book ID=\"103\">"
+ "<No>0006</No>"
+ "<Name>Book 0006</Name>"
+ "<Price>600</Price>"
+ "<Remark>This is a book 0006.</Remark>"
+ "</Book>"
+ "</Books>";
///导入XML文件
XElement xmlDoc = XElement.Parse(xmlString);
///以下为LINQ查询表达式 var result = from e in xmlDoc.Elements("Book")
where (string)e.Element("Name") == "Book 0002"
select e; foreach (var u in result)
{
Response.Write("NO:" + (string)u.Element("No") + "</br>" + "Name:" + (string)u.Element("Name") + "</br>");
}
}

ReadyXmlData方法中我们创建了一个xml文档,然后过滤出Book元素且Name为"Book ooo2"的元素。

我们先简单了解了一下Linq对四种对象的查询方法,后面我们会有更详细的讲解。

Linq专题之创建Linq查询表达式的更多相关文章

  1. 认识LINQ的第一步---从查询表达式开始

    学习和使用C#已经有2个月了,在这两个月的学习中,深刻体会到,C#这门语言还真不适合编程初学者学习,因为它是吸取了很多其他语言,不仅是面向对象,还包括函数式语言的很多特性,导致它变成特性大爆炸的语言. ...

  2. linq to sql 动态构建查询表达式树

    通过Expression类进行动态构造lamda表达式. 实现了以下几种类型,好了代码说话: public Expression<Func<T, bool>> GetAndLa ...

  3. Linq专题列表

    什么是Linq? Linq(Language-Integrated Query),即语言集成查询.是微软的一项新技术,能够将查询功能直接引入.NET Framework3.5 所支持的编程语言(C#, ...

  4. 查询表达式和LINQ to Objects

    查询表达式实际上是由编译器“预处理”为“普通”的C#代码,接着以完全普通的方式进行编译.这种巧妙的发式将查询集合到了语言中,而无须把语义改得乱七八糟 LINQ的介绍 LINQ中的基础概念 降低两种数据 ...

  5. Linq查询表达式

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

  6. 《C#本质论》读书笔记(15)使用查询表达式的LINQ

    15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable<string> sel ...

  7. LINQ 查询表达式(C# 编程指南)

    语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上.  借助于 LINQ,查询现在 ...

  8. Linq专题之Linq查询from子句

    Linq查询表达式包含8个常用的子句:from.where.select.join.into.orderby.group.let.我们来看看详细的说明.      from:      指定查询操作的 ...

  9. Linq专题之Lambda表达式

    这一节我们讲的Lambda表达式跟匿名函数有关.Lambda表达式就是一个匿名函数,它可以包含表达式和语句,并且可以创建委托和表达式树. Lambda表达式的组成: 输入参数.Lambda运算符(=& ...

随机推荐

  1. DataTable 排序

    DataTable newdtb = new DataTable(); newdtb.Columns.Add("Id", typeof(int)); newdtb.Columns. ...

  2. mac上使用生成RSA公钥和密钥

    关于RSA加密解密的问题,没事弄了一下,先把主要的流程保存下来,以备交流或者以后用. 首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度...... ...

  3. 20个最漂亮的基于WordPress的企业网站

    20个最漂亮的基于WordPress的企业网站 每个人都知道很好很强大的WordPress是开源的,并且有一个很强的的团队和更强大的支持社区.它被世界上的广大设计师.程序员和商业人员广泛使用.它已经成 ...

  4. AppStore 相关

    App 跳转 AppStore 网址链接   https://itunes.apple.com/app/uri/id582319843?mt=8   https 可替换成 itms,可直接避免进入 S ...

  5. NSObject的load和initialize方法(转)

    全文转载自:http://www.cocoachina.com/ios/20150104/10826.html 在Objective-C中,NSObject是根类,而NSObject.h的头文件中前两 ...

  6. MySQL数据库从GBK转换到UTF-8最简单解决方案(也适用于其它编码转换)

    1.使用mysqldump导出表结构,如: mysqldump -d -u root -p 数据库名 >/root/struct.sql 2.使用mysqldump以特定编码导出数据(其中utf ...

  7. SQL语句 - 嵌套查询

    嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...

  8. C# barcode生成代码

    protected void Page_Load(object sender, EventArgs e) { string code = Request.Params["code" ...

  9. fast-framework – 基于 JDK 8 实现的 Java Web MVC 框架

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! fast-framework 轻量级 Java Web 框架 – https://github. ...

  10. C primer plus 练习题 第五章

    1. #include <stdio.h> #define MINU 60 int main() { int minute, hour, m; printf("请输入分钟:&qu ...