2

わかりましたので、データベース内の私のテーブルは次のとおりです。

CREATE DATABASE Temp  
GO --------------------------  
USE Temp  
GO --------------------------  
CREATE TABLE Table1  
    (  
      Table1Id INT IDENTITY(1, 1) ,  
      Name VARCHAR(20) ,  
      CONSTRAINT pk_Table1 PRIMARY KEY ( Table1Id )  
    )  
GO --------------------------  
    CREATE TABLE Table2  
        (  
          Table2Id INT IDENTITY(1, 1) ,  
          Table1Id INT ,  
          NAME VARCHAR(20) ,  
          TheDate SMALLDATETIME ,  
          CONSTRAINT pk_Table2 PRIMARY KEY ( Table2Id ) ,  
          CONSTRAINT fk_Table2_Table1 FOREIGN KEY ( Table1Id ) REFERENCES Table1 ( Table1Id )  
        )  
    GO --------------------------  
    INSERT  INTO Table1  
            ( Name )  
    VALUES  ( 'Stack Overflow' )  
    GO --------------------------  
    INSERT  INTO Table1  
            ( Name )  
    VALUES  ( 'Expert Sex Change' )  
    GO --------------------------  
    INSERT  INTO Table1  
            ( Name )  
    VALUES  ( 'Code Project' )  
    GO --------------------------  
    INSERT  INTO dbo.Table2  
            ( Table1Id ,  
              NAME ,  
              TheDate   
            )  
    VALUES  ( 1 ,  
              'S1' ,  
              '11-01-2012'  
            )  
    GO --------------------------  
    INSERT  INTO dbo.Table2  
            ( Table1Id ,  
              NAME ,  
              TheDate   
            )  
    VALUES  ( 1 ,  
              'S2' ,  
              '11-01-2013'  
            )  
    GO --------------------------  
    INSERT  INTO dbo.Table2  
            ( Table1Id ,  
              NAME ,  
              TheDate   
            )  
    VALUES  ( 2 ,  
              'E1' ,  
              '10-01-2013'   
            )  

そして、ここに私のLINQがあります:

from t1 in Table1s 
     join t2 in Table2s.OrderByDescending(x => x.TheDate)
        on t1.Table1Id equals t2.Table1Id into tt
     from t2 in tt.DefaultIfEmpty()
     select new 
     {
        t1.Table1Id,
        t1.Name,
        t2.NAME,
        t2.TheDate
     }

これは次を返します:

Table1Id - 名前 - NAME - TheDate
1 - スタック オーバーフロー - S2 - 11/1/2013
2 - エキスパート セックス チェンジ - E1 -
10/1/2013 1 - スタック オーバーフロー - S1 - 11/1/2012
3 - コード プロジェクト - null - ヌル

古い日付値のように、LINQ クエリが 3 行目を返さないようにします。

4

1 に答える 1