我有一个简单的表,基本上有一个NVARCHAR名称列和DateTime时间戳列。我想编写一个C#函数,该函数接收名称和日期时间的集合,并从我的表中返回名称匹配和日期时间在集合中的日期早于表中的日期时间的所有内容。基于C#集合过滤SQL表结果
我的非SQL大脑提出的简单方法是创建一个SELECT语句以获取所有匹配的名称(“SELECT Name,Timestamp From MyTable WHERE Name IN(...)”),然后遍历返回的集合比较DateTimes。
必须有更好的方法来用SQL或Linq来做到这一点。我如何更有效地做到这一点?
更新: 感谢您的有益反馈!听起来像在这里列出的各种方法上运行查询分析器将是一条路。这里有另外一个扔在那里,如果有任何好奇:
List<Item> items = ... // this the collection
var db = new ItemDataContext(); // From .Net EF
string[] results = (from item in items
from dbItem in db.Items
where item.Name.Equals(dbItem.Name,StringComparison.InvariantCultureIgnoreCase)
&& item.Timestamp < dbItem.Timestamp
select dbItem.Token).ToArray();
感谢关于查询分析器的提示以及此处的连接示例。 – jglouie 2011-06-15 01:30:06
http:// www。sqlservercentral.com/articles/T-SQL/73838/包含了对各种解决方案的深入讨论。 – faester 2011-06-21 12:19:58