惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
K
Kaspersky official blog
Scott Helme
Scott Helme
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - Franky
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
月光博客
月光博客
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
人人都是产品经理
人人都是产品经理
L
Lohrmann on Cybersecurity
Recorded Future
Recorded Future
Latest news
Latest news
V2EX - 技术
V2EX - 技术
T
The Exploit Database - CXSecurity.com
H
Heimdal Security Blog
F
Fortinet All Blogs
Cloudbric
Cloudbric
IT之家
IT之家
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
AWS News Blog
AWS News Blog
H
Help Net Security
S
Security @ Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
F
Full Disclosure
S
Schneier on Security
S
Security Affairs
T
Tenable Blog

博客园 - 西门潇洒

MSSQL批量写入数据方案 关于SQL连接 加条件查询的LINQ表达式写法 .NET新特性--扩展方法 Array中数据强制数据类型转换 the Project type is not supported by installation 项目类型不能正确加载 ASP.NET三层架构中数据绑定的问题 ASP.NET 2.0中XML数据的处理 小牛生产小牛的问题解决集粹 <转>自毁前程的七种行为 <转>在 ASP.NET 中执行 URL 重写 正则式中的实用命名组替换 去除socket编程当中接收到的多余符\0 - 西门潇洒 - 博客园 将一段符合XML格式规范字符串插入已有XML文档当中 <转>如何C#中实现在TreeView查找某一节点 javascript正则表达式中使用变量关键字 <转>JavaScript 参考教程之对象化编程 <转>JavaScript 参考教程之JavaScript 简介 <转>JavaScript 参考教程之事件处理 <转>JavaScript 参考教程资料之文档对象
关于LINQ中实现随机查询数据库中记录
西门潇洒 · 2008-08-01 · via 博客园 - 西门潇洒

传统使用sql命令行方式

SELECT TOP 1 * FROM Customers ORDER BY NEWID()
--随机取出一条记录,想取多条,则top n

当随着LINQ时代的来代,这一切就有点不太好用了

按照传统的思路,我们可以把LINQ查询式写为

var results=(from c in db.Customers orderby  NEWID()
select c).Take(
10);
//具体数据条数由take来进行指定

问题出现了,在C#当中根本就没有提供NEWID()这个方法..

几经周折,终于发现了一个比较可行的方案,就是为其添加这个NEWID()方法

下面是实现方案

首先我们需要在系统自由生成的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();

好了忙活了老半天,特贴出来希望朋友们少走弯路^_^