首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用LINQ c#生成等价查询

问如何用LINQ c#生成等价查询
EN

Stack Overflow用户
提问于 2015-07-22 15:08:48
回答 1查看 72关注 0票数 0

这是我的内联sql查询。我喜欢由LINQ生成的相同的等价查询。

代码语言:javascript
复制
var lowerPageBoundary = 0;
var tableName = "Orders";
var columnToSortBy = "OrderID";
var sortColumn = "OrderID";
var rowsPerPage = 16;
var CommaSeparatedListOfColumnNames = "OrderID,CustomerID,EmployeeID ";

var SQL = "Select Top " + rowsPerPage + " " +
    CommaSeparatedListOfColumnNames + " From " + tableName +
    " WHERE " + columnToSortBy + " NOT IN (SELECT TOP " +
    lowerPageBoundary + " " + columnToSortBy + " From " +
    tableName + " Order By " + sortColumn +
    ") Order By " + sortColumn;

到目前为止这是我的LINQ查询。只需告诉我如何自定义它以获得像上面这样的在线sql查询的输出。

代码语言:javascript
复制
    XDocument document = XDocument.Load(xmlFilePath);
    var query = from r in document.Descendants("orders")
        select new
        {
            OrderID = r.Element("OrderID").Value,
            CustomerID = r.Element("CustomerID").Value,
            EmployeeID = r.Element("EmployeeID").Value
        };
    query = query.OrderBy(sortColumn + " " + OrderDirection);

如何将其嵌套到上面的sql查询中,并添加类似于上面的sql查询的分页概念。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 15:21:39

如果您发布原始SQL查询,会更容易一些,但以下是我的看法:

代码语言:javascript
复制
document
.Where(x=> !documents.OrderBy(p=> p.OrderID)
                     .Take(sortColumn)
                     .Contains(x))
.Select(p=> new {...})
.OrderBy(...).Take(...)

编辑:

或者更好的是:

代码语言:javascript
复制
var hashSet = new HashSet<Whatever>(
                     documents.OrderBy(p=> p.OrderID)
                              .Take(sortColumn));
document
.Where(x=> !hashSet.Contains(x))
.Select(p=> new {...})
.OrderBy(...).Take(...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31567104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档