簡體   English   中英

LINQ to SQL連接順序

[英]LINQ to SQL Join orderby

我是LINQ的新手並加入,所以如果我問錯了,請原諒我。 我有兩張桌子

表格1

id   name    date
1    Mike    20-10-15
2    John    21-10-15
3    Sam     23-10-15

表2

id   name   date
1    Ashle  19-10-15
2    Lily   21-10-15
3    Jeni   22-10-15
4    April  23-10-15

我需要使用Joins的5條記錄,並且應該是orderby Date(最新記錄)。

你們能幫我嗎,我真的需要弄清楚Joins如何與orderby一起工作。 謝謝

編輯:他們是兩個不同的表,所以沒有外鍵,所以我想我不能使用Join,到目前為止我所做的就是這樣

var combinddata = (from t1 in db.Table1
                        select t1.id)
                            .Concat(from t2 in db.Table2
                                    select t2.id);

我不知道如何只獲取5條記錄,如何在DateTime基礎上比較兩個表中的記錄。

輸出應為

  1. 山姆
  2. 四月
  3. 傑尼
  4. 約翰
  5. 百合

您可以連接來自不同表的相等匿名類型。 如果您還選擇日期,則可以按降序對日期進行排序,並獲取前5條記錄:

Table1.Select (t1 => 
    new
    {
        Id = t1.Id,
        Name = t1.Name,
        Date = t1.Date
    }
).Concat(
Table2.Select (t2 => 
    new
    {
        Id = t2.Id,
        Name = t2.Name,
        Date = t2.Date
    }
))
.OrderByDescending (x => x.Date).Take(5)

請注意,這優先於Table1項目。 如果合並結果中的項目5和6處於同一日期,但分別來自Table1Table2 ,則只能從Table1獲得該項目。

如果需要,您可以從此結果中僅選擇名稱,但我假設您的輸出僅顯示記錄的預期順序,而不顯示確切的預期結果。

試試這個

var combinddata = (from t1 in db.Table1
                        select t1.Name)
                            .Concat(from t2 in  db.Table2 
                                    select t2.Name).OrderByDescending(x => x.date).Take(5);
var query = 
    from Table1 in table1
    join Table2 in table2 on table1.id equals table2.id 
    orderby table1.date ascending 
    select table1.date;

暫無
暫無

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

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