2012-04-23 8 views
1

私はまだ解決策を見つけることはできませんでした。問題を単純化するには:私は2つのSQLテーブルを持っており、私はLinQ to SQLを使用しています。 2つのテーブルはコースを表し、CourseTypeにはCourseNameとTotalSpotsが含まれ、CourseInstanceにはCourseDate、AmountSignedUp、およびCourseTypeへの参照が含まれます。 CourseTypeとCourseInstanceの間には、1対1の関係があります。サブリスト項目のLinq orderbyの合計がメインリスト項目と比較されました

私が助けを必要としているのは、(もし可能ならば)CourseTypeとCourseInstanceの両方を並べ替えるLinqクエリ/ラムダ式です。私はCourseTypeが、ほとんどのフリースポットを持つCourseTypeが最初に表示されている、全フリースポット(CourseType; CourseType.TotalSpots - CourseInstance.SignedUp)の下のすべてのCourseInstanceから計算された後にソートされることを望みます。私は、CourseInstanceがどれくらいのフリースポット(CourseType.TotalSpots - CourseInstance.AmountSignedUp)を持っているかによって、CourseInstanceをsimlarでソートします。

私はこれを解決する方法を頭にすることはできません。

編集:これまでCourseTypeを正しく並べ替えるためにこのコードを実行しました。 CourseInstanceサブリストをどのようにソートすることができるかわかりません(CourseType.CourseInstance)。私は誰かがこれに対する良い解決策を持っていない限り、私はそれをリストに変換しているときにコードの後半でそれをしなければならないと思います。アリオンが提案したように私はそれを行うことができました、なぜ私は彼の答えに印をつけますか?

var result= (
     from c in _db.CourseType 
     orderby ((c.TotalSpots * c.CourseInstance.Count) - c.CourseInstance.Sum(
           ci => (ci.AmountSignUp ?? 0))) descending 
     select c 
    ); 

答えて

0

私は本当にあなたが望むものではありません。でも、c.TotalSpots - ci.AmountSignedUpで注文したいと思うようです。それで十分ではありませんか?

var result=(
    from ct in db.CourseType 
    join ci in db.CourseInstance 
     on ct.SomeCourseTypeKey equals ci.SomeCourseInstanceKey 
    orderby c.TotalSpots - ci.AmountSignedUp 
    select new {ci,ct} 
    ); 

ここで、dbはlinqデータコンテキストです。

場合やc.TotalSpotsci.AmountSignedUpnullableは、このようなものです:

var result=(
     from ct in db.CourseType 
     join ci in db.CourseInstance 
      on ct.SomeCourseTypeKey equals ci.SomeCourseInstanceKey 
     orderby (c.TotalSpots??0) - (ci.AmountSignedUp??0) 
     select new {ci,ct} 
     ); 

私はまだわからないあなたが欲しい欲しいけど。あなたはこれを行うことができます:

var result=(
    from ct in db.CourseType 
    orderby ct.TotalSpots 
    select new 
    { 
     ci, 
     CourseInstances=(
      from ci in db.CourseInstance 
      where ct.SomeCourseTypeKey == ci.SomeCourseInstanceKey 
      orderby ct.TotalSpots- ci.AmountSignedUp 
      select ci 
     ) 
    } 
    ); 
+0

アリオン!私は結果がCourseTypeとCourseInstanceの両方ではなく、CourseTypeだけを含むようにします。 ReasonはCourseInstanceがCourseTypeのサブリストになると、そのサブリストに含まれるオブジェクトが必要なときにこのサブリストをクエリできます。私は、CourseTypeとSublist CourseInstanceの両方をソートしたいと思います。これはポーズブルなのか、それとも両方のソートされたリストを持つだけで解決するための方法ですか?乾杯 –

+0

それはあなたのためにそれを修正しましたか? @ user1350598:良いと思う答えを投票してください。それは私たちにすべて暖かいあいまい感を与えます:P – Arion

関連する問題