Linq隨機(jī)讀取數(shù)據(jù)淺析
學(xué)習(xí)Linq時(shí),經(jīng)常會(huì)遇到Linq隨機(jī)讀取數(shù)據(jù)問(wèn)題,這里將介紹Linq隨機(jī)讀取數(shù)據(jù)問(wèn)題的解決方法
Linq隨機(jī)讀取數(shù)據(jù)
在系統(tǒng)自由生成的o/p mapping代碼中添加這個(gè)方法,如果是用戶自己編寫(xiě)的(或是工具生成的)o/p mapping代碼也是同理。這里我就說(shuō)下我自己的。系統(tǒng)生成的LINQ To Sql類會(huì)產(chǎn)生三個(gè)文件.Northwind.cs、Northwind.dbml.layout、Northwind.designer.cs
我們要做的就是在Northwind.designer.cs中去添加我們需要的方法NEWID(),這個(gè)方法的功能當(dāng)然就是和數(shù)據(jù)庫(kù)當(dāng)中的NEWID()是功能一致的。
具體的方法法代碼如下:
- [System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")]
- public partial class NorthwindDataContext : System.Data.Linq.DataContext
- {
- private static System.Data.Linq.Mapping.
MappingSource mappingSource = new AttributeMappingSource();- //在自動(dòng)生成的mapping code中添加
- [Function(Name = "NEWID", IsComposable = true)]
- public Guid NEWID()
- {
- return ((Guid)(this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod()))).ReturnValue));- }
- //后面的生成代碼略..
重新生成,編寫(xiě)好這個(gè),我們的訪問(wèn)實(shí)現(xiàn)就變的很容易了,其使用方式和傳統(tǒng)訪問(wèn)原理一致。
- db = new NorthwindDataContext();
- var result = (from c in db.Customers orderby db.NEWID() select c).Take(10);
- foreach (var item in result)
- Console.WriteLine(item.CompanyName);
- Console.ReadLine();
以上介紹Linq隨機(jī)讀取數(shù)據(jù)。
【編輯推薦】