簡體   English   中英

如何通過LINQ C#生成等效查詢

[英]How to generate equivalent query by LINQ c#

這是我的內聯SQL查詢。 我想由LINQ生成相同的等效查詢。

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查詢的輸出。

    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這樣的分頁概念。

如果您發布原始的SQL查詢會更容易,但這是我的看法:

document
.Where(x=> !documents.OrderBy(p=> p.OrderID)
                     .Take(sortColumn)
                     .Contains(x))
.Select(p=> new {...})
.OrderBy(...).Take(...)

編輯:

或者更好:

var hashSet = new HashSet<Whatever>(
                     documents.OrderBy(p=> p.OrderID)
                              .Take(sortColumn));
document
.Where(x=> !hashSet.Contains(x))
.Select(p=> new {...})
.OrderBy(...).Take(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM