2017-06-26 7 views
0

時間部分を無視して、日付部分がDateAdded(タイプはDateTime)で「組織」をソートしようとしています。その主なソートの後、私は組織の名前でソートしたい。linqクエリでDateTimeの時間部分を無視する

これは私が現在持っているものですが、それはまた、時間に基づいてソートします。

IQueryable<Organization> organizations = from m in context.Organizations 
    orderby m.OrgName ascending 
    orderby m.DateAdded ascending 
    select m; 

は、上記のほとんど動作しますが、それはあまりにも、時間通りに並べ替えます。

+1

はあなたのIQueryProviderに依存します。エンティティフレームワーク? SQLへのリンク? – Jeff

+0

m.DateAdded .Dateはその日時を行うべきです –

+2

IQueryProviderがそれをサポートしていない限り動作しません – Jeff

答えて

3
IQueryable<Organization> organizations = context.Organizations 
    .Orderby(m => m.DateAdded.Date) 
    .ThenBy(m => m.OrgName); 

EntityFunctions.TruncateTimeを使用することができますEntityFrameworkだ場合、私はあなたがEntity Frameworkの(LINQのツーエンティティ)どこを使用しているヒントIQueryableを使用している参照(私は信じている)DateTime.Dateは動作しませんが、あなたはEntityFunctions.TruncateTimeを使用することができます。

using System.Data.Entity; 

IQueryable<Organization> organizations = context.Organizations 
    .Orderby(m => EntityFunctions.TruncateTime(m.DateAdded)) 
    .ThenBy(m => m.OrgName); 
+0

これは本当に近いです、Dai。あなたはまだ私が取り除かなければならなかった "日付"を持っていました。そして私はTruncateTimeを少し違って呼び出さなければなりませんでした。これは機能しました:IQueryable organizations = context.Organizations.OrderBy(m => System.Data.Entity.DbFunctions.TruncateTime(m.DateAdded))。ThenBy(m => m.OrgName) –

+0

@SteveAそれ:)私は私の答えを修正しました。 – Dai

0

それはあなたが日

関連する問題