學習Linq時,經常會遇到Linq隨機讀取數據問題,這裡將介紹Linq隨機讀取數據問題的解決方法
Linq隨機讀取數據
在系統自由生成的o/p mapping代碼中添加這個方法,如果是用戶自己編寫的(或是工具生成的)o/p mapping代碼也是同理。這裡我就說下我自己的。系統生成的LINQ To Sql類會產生三個文件.Northwind.cs、Northwind.dbml.layout、Northwind.designer.cs
我們要做的就是在Northwind.designer.cs中去添加我們需要的方法NEWID(),這個方法的功能當然就是和數據庫當中的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();
//在自動生成的mapping code中添加
[Function(Name = "NEWID", IsComposable = true)]
public Guid NEWID()
{
return ((Guid)(this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod()))).ReturnValue));
}
//後面的生成代碼略..
重新生成,編寫好這個,我們的訪問實現就變的很容易了,其使用方式和傳統訪問原理一致。
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隨機讀取數據。