Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回日期,不带时间,但不是字符串类型,而是日期类型_C#_Linq_Asp.net Mvc 4_Stored Procedures - Fatal编程技术网

C# 返回日期,不带时间,但不是字符串类型,而是日期类型

C# 返回日期,不带时间,但不是字符串类型,而是日期类型,c#,linq,asp.net-mvc-4,stored-procedures,C#,Linq,Asp.net Mvc 4,Stored Procedures,我有一个日期值,我想从中提取时间。我希望退货类型是日期类型,因为我想订购我拥有的日期列表。将列表设置为表示日期的字符串不会返回正确的顺序。 我知道DateTime总是返回带有时间的日期。我的选择是什么?如果没有时间,我如何改进代码并拥有日期类型的项目列表 编辑:我只想知道日期。之后什么都没有。类似于2016年7月8日,而不是2016年7月8日00:00:00或日期后的任何事情。在日期对象中 这是我的密码: using (var db = new MyModel.Context())

我有一个日期值,我想从中提取时间。我希望退货类型是日期类型,因为我想订购我拥有的日期列表。将列表设置为表示日期的字符串不会返回正确的顺序。 我知道DateTime总是返回带有时间的日期。我的选择是什么?如果没有时间,我如何改进代码并拥有日期类型的项目列表

编辑:我只想知道日期。之后什么都没有。类似于2016年7月8日,而不是2016年7月8日00:00:00或日期后的任何事情。在日期对象中

这是我的密码:

 using (var db = new MyModel.Context())
            {
                var cert = (

                    from tr in db.uspTranscripts(personId)
                    from a in db.PersonTranscripts.Where(x => x.UPID == personId)
                    from b in db.LU_CreditType.Where(x => x.ID == a.CreditTypeID)

                                    select new CertViewModel
                                    {

                                        ActivityTitle = tr.ActivityTitle,
                                        Score = tr.Score,
                                        Status = tr.Status,
                                        CompletionDate = tr.CompletionDate,
                                        CretitTypeName = b.ShortName,
                                        CompletedDateSorted = a.HK_CreatedOn

                                    }).OrderByDescending(x => x.CompletedDateSorted).ToList();

                List<CertViewModel> certlist = cert;

                foreach (var item in certlist)
                {
                    string itemWithoutHour = item.CompletionDate.Value.ToShortDateString();
                     var itemConverted = DateTime.ParseExact(itemWithoutHour, "M/d/yyyy", null);
                item.CompletionDate = itemConverted;

                }

                return certificateslist.GroupBy(x => x.ActivityTitle).Select(e => e.First()).ToList();
            }
使用(var db=new MyModel.Context())
{
var证书=(
来自数据库中的tr.usptracts(personId)
从db.personTransscripts.Where(x=>x.UPID==personId)中的
从db.LU_CreditType.Where中的b开始(x=>x.ID==a.CreditTypeID)
选择新的CertViewModel
{
ActivityTitle=tr.ActivityTitle,
分数,
地位,
CompletionDate=tr.CompletionDate,
CretitTypeName=b.ShortName,
CompletedDateSorted=a.HK\u CreatedOn
}).OrderByDescending(x=>x.CompletedDateSorted).ToList();
List certlist=证书;
foreach(certlist中的var项)
{
string itemWithoutHour=item.CompletionDate.Value.ToSortDateString();
var itemConverted=DateTime.ParseExact(itemWithoutHour,“M/d/yyyy”,null);
item.CompletionDate=itemConverted;
}
返回certificateslist.GroupBy(x=>x.ActivityTitle)。选择(e=>e.First()).ToList();
}

对于任何给定的
日期时间
对象,您可以引用以去除时间值:

var withTime = DateTime.Now; // 8/7/2016 22:11:43
var withoutTime = withTime.Date; // 8/7/2016 00:00:00

.NET framework没有仅日期对象

也许有必要了解
DateTime
结构的工作原理。在内部,它将自1/01/0001 12:00 am以来的偏移量以刻度(1刻度=100纳秒)为单位存储在单个64位无符号整数中。(1滴答=100纳秒)

然后,
DateTime
结构为处理日期和时间提供了许多有用的方法和属性,例如向现有日期添加一些天,或者计算两次的差值。一个有用的属性是
Date
,它将
DateTime
对象向下舍入到最近的一天(上午12:00)

日期、时间和带时间的日期都非常相似,主要区别在于如何设置它们的格式,一个带时间的日期如果省略了时间,就只是一个日期

David建议您在内部使用
DateTime
结构,使用
Date
属性剥离任何时间,对
DateTime
进行排序,比较并将其修改为
DateTime
对象


仅在需要显示时将其转换为
字符串
,此时您可以使用
ToSortDateString()
ToString(字符串格式)
等方法仅显示日期。

但它仍将时间显示为00:00:00。我想要一些2016年8月7日的东西,之后什么都不要。@Francky:A
DateTime
对象本身不显示任何东西。如何在UI中显示值完全是一个独立的问题。如果要在没有时间的情况下显示它,请在没有时间的情况下显示它。但是
DateTime
类型具有这些属性。如果您想要一个没有这些属性的类型,我想您需要定义自己的类型。整个过程就是能够在没有时间的情况下显示它。我可以去掉时间部分,但必须将其转换为字符串,因此我们回到相同的问题,即使用日期,而不是字符串。这里主要关心的是能够对列表进行排序。将其转换为字符串将返回不正确的排序列表。@弗兰基:同样,您可以随意显示该值。有许多选项可以按照您的喜好格式化输出:只需对
DateTime
值执行排序,并且在显示时使用您喜欢的任何显示字符串。这听起来真的不是问题。重复,已在中回答