目录
1.2 Context.CreateQuery<T>() 1
1.3 ObjectQuery<DbDataRecord> 2
4.9 OrderBy,OrderByDescending 7
4.10 ThenBy,ThenByDescending 7
5.9 ElementAt,ElementAtOrDefault 17
ObjectQuery<T>数据加载方式
1. ObjectQuery<T> 提供了一个管理[实体对像]集合
2. ObjectQuery<T>继承System.Data.Objects.ObjectQuery, ObjectQuery对ObjectContext进行了封装,
3.可以通过ObjectContext.CreateQuery<T>("esql")的方式创建ObjectQuery<T>
4.可以通过new ObjectQuery<T>(ObjectContext,"esql")的方式创建ObjectQuery<T>,跟据SQL字串的不同,会得到具体的ObjectQuery<值类型>,或ObjectQuery<DbDataRecord>或ObjectQuery<实体>
访问方式
Context.CreateQuery<T>()
metadata=res://*/myModel.csdl |res://*/myModel.ssdl |res://*/myModel.msl ;
provider=System.Data.SqlClient;
provider connection string="" Data Source=.; Initial Catalog=LingTestDB; Integrated Security=True; MultipleActiveResultSets=True; "" ";
context.DefaultContainerName = "myContext";
{ System.Console.WriteLine("{0},{1}", r.ItemID, r.ItemMatter); } |
metadata=res://*/myModel.csdl |res://*/myModel.ssdl |res://*/myModel.msl ;
provider=System.Data.SqlClient;
provider connection string="" Data Source=.; Initial Catalog=LingTestDB; Integrated Security=True; MultipleActiveResultSets=True; "" ";
{ System.Console.WriteLine("{0},{1}",r.ItemID,r.ItemMatter); } |
ObjectQuery<DbDataRecord>
metadata=res://*/myModel.csdl |res://*/myModel.ssdl |res://*/myModel.msl ;
provider=System.Data.SqlClient;
provider connection string="" Data Source=.; Initial Catalog=LingTestDB; Integrated Security=True; MultipleActiveResultSets=True; "" ";
{ System.Console.WriteLine("{0},{1}",r[0].ToString(),r[1].ToString()); } |
ObjectQuery<简单类型>
metadata=res://*/myModel.csdl |res://*/myModel.ssdl |res://*/myModel.msl ;
provider=System.Data.SqlClient;
provider connection string="" Data Source=.; Initial Catalog=LingTestDB; Integrated Security=True; MultipleActiveResultSets=True; "" ";
{ System.Console.WriteLine("个数:{0}", r.ToString() ); } |
Execute方法与ObjectResult
Execute方法
metadata=res://*/myModel.csdl |res://*/myModel.ssdl |res://*/myModel.msl ;
provider=System.Data.SqlClient;
provider connection string="" Data Source=.; Initial Catalog=LingTestDB; Integrated Security=True; MultipleActiveResultSets=True; "" ";
context.DefaultContainerName = "myContext";
{ System.Console.WriteLine("{0},{1}",r.ItemID,r.ItemMatter); } |
ObjectResult<T> 结果集
ObjectQuery<T>.Execute()方法返回ObjectResult<T>对象
类型转换
OfType(TResultType)
ObjectQuery<TResultType> OfType<TResultType>(); |
|
Linq方法
All
判断集合中是否所有元素都满足某一条件 |
myContext context = new
|
SELECT CASE cast(1 as FROM WHERE ( )) cast(1 as FROM WHERE ( )) FROM ( |
Any
判断集合中是否有元素满足某一条件 |
myContext context = new bool b = context.DBItemList.Any(p => p.ItemValue == 4); |
SELECT CASE cast(1 as FROM WHERE 4 = )) cast(1 as FROM WHERE 4 = )) FROM ( |
Take
获取集合的前n个元素 |
myContext context = new IQueryable<DBItemList> list = context.DBItemList.Take(3); |
SELECT [c].[AutoId] [c].[NameID] [c].[ItemID] [c].[ItemValue] FROM |
Skip
跳过集合的前n个元素, Linq To Entity 要求必须先OrderBy |
|
SELECT [Extent1].[AutoId] [Extent1].[NameID] [Extent1].[ItemID] [Extent1].[ItemValue] FROM ( FROM ) WHERE ORDER |
First
集合的第一个元素,集合中没有会报错, |
|
SELECT [Extent1].[AutoId] [Extent1].[NameID] [Extent1].[ItemID] [Extent1].[ItemValue] FROM WHERE 5 = |
FirstOrDefault
集合中的第一个元素,没有则返回类型默认值,对象型默认值为null |
{
} |
Where
用LinqExpressions为条件进行查询 |
|
SELECT [Extent1].[AutoId] [Extent1].[NameID] [Extent1].[ItemID] [Extent1].[ItemValue] FROM WHERE 5 = |
Distinct
过滤集合中的相同项
ObjectQuery<T> Distinct() |
||
|
||
SELECT [Distinct1].[C1]
|