1

SQL Server 2008 R2 Expressから生成されたADO.NETエンティティデータモデルがあり、テーブルには時刻または日時の値があります。datagridでは、このフィールドはミリ秒で正しく表示されますが、ObjectSet <>を使用したLINQクエリでは、ミリ秒が失われました。なんで?

var query = from data in ctx.Data
            join member in ctx.Members
            on data.MemberId equals member.MemberId
            where member.StepId == (int)RepStepCombo.SelectedValue
            orderby data.Time ascending
            select new { 
                data.LaneNum, 
                member.MemberName, 
                data.Time, 
                mill = data.Time.Millisecond
            };

StreamWriter sw = new StreamWriter("text.txt");
foreach (var data in query)
{
    sw.WriteLine(data.LaneNum + " " + 
                 data.MemberName + " " + " millisec: " +
                 data.Time.ToString("HH:mm:ss.fff") + " " + 
                 data.mill);
}
sw.Close();
sw.Dispose();
4

1 に答える 1

2

確かにTimeはDateTimeであり、SmallDateTimeではありませんか?SmallDateTimeの解像度は小さく、ミリ秒の精度ではありません。

Sql2008とEFを使用して日時フィールドからミリ秒を取得するのに問題はありません。

var members = from s in myEntites.TableName
              select s;

            foreach (TableEntry entry in members)
            {
                String time = ((DateTime)entry.date).ToString("HH:mm:ss.fff");
                Console.WriteLine(time);
            }

時間については、TimeSpanに変換します。

    var members = from s in myEntites.TableName
                  where s.myTime != null
                  select s;

    foreach (Entity myEntity in members)
    {
        String time = ((TimeSpan)myEntity.myTime).Milliseconds.ToString();
    }

「私のマシンで動作します!」:)

于 2012-11-20T08:57:29.150 に答える