2011-06-25 5 views
1

が、私はこれを持って参加する:私はこのようにそれへ追加したいヘルプ建物までLINQ2SQLクエリが

var q = (from order in db.Orders 
         from payment in db.Payments 
         .Where(x => x.ID == order.paymentID) 
         .DefaultIfEmpty() 
         from siteUser in db.SiteUsers 
         .Where(x => x.siteUserID == order.siteUserID) 
         .DefaultIfEmpty() 
         where siteUser.siteUserID != null 
               select new 
         { 
          order.orderID, 
          order.dateCreated, 
          payment.totalAmount, 
          siteUser.firstName, 
          siteUser.lastName 
         }); 

switch (_qs["sort"]) 
      { 
       case "0": 
        q = q.OrderByDescending(x => x.dateCreated); 
        break; 
       case "1": 
        q = q.OrderBy(x => x.dateCreated); 
        break; ... 

私は前に単一のテーブルでこれをやりました、最初のコードブロックの複数のテーブルは、匿名型になるselect文を指定するように強制します。これはどうすればできますか?

注:私は選択しているプロパティを持つクラスを作成しようとしましたが、この型にクエリをキャストしても、それはまだ行われません。

答えて

1

私は質問を理解していますが、貼り付けたコードは有効です。

私がチェック:

var q = (
    from order in db.Orders 
    join payment in db.Payments on 
     order.paymentID equals payment.ID into payments 
    from payment in payments.DefaultIfEmpty() 
    join siteUser in db.SiteUsers on 
     order.siteUserID equals siteUser.siteUserID into siteUsers 
    from siteUser in siteUsers.DefaultIfEmpty() 
    where siteUser.siteUserID != null 
    select 
     new 
     { 
      order.orderID, 
      order.dateCreated, 
      payment.totalAmount, 
      siteUser.firstName, 
      siteUser.lastName 
     }); 
switch (sort) 
{ 
    case "0": 
     q = q.OrderByDescending(x => x.dateCreated); 
     break; 
    case "1": 
     q = q.OrderBy(x => x.dateCreated); 
     break; 
} 
var restult = q.ToList(); 

これは動作します。

+0

@Nick - これが質問に答えることができない場合、何が間違っているか説明してください。 –

+0

あなたの権利は機能します...私はそれがうまくいかない前に私が何を持っていたのか分かりません。ありがとう! –