如何将此自定义Linq查询置于查看状态?

时间:2016-09-07 12:42:25

标签: c# linq

我是Linq的新手,可以使用一些帮助。 我试图将自定义Linq查询设置为MVC视图,但我无法弄清楚如何操作?

以下是我的actionresult的代码

来自db.Stats中的st

        orderby
            st.ID descending
        select new 
        {
            st.ID,
            st.Date,
            st.Created,
            st.Accepted,
            st.Ended,
            Totaltime =
                (SqlFunctions.StringConvert((double) SqlFunctions.DateDiff("ss", st.Created, st.Ended)/60) + ":" +
                 ("0" + SqlFunctions.StringConvert((double) SqlFunctions.DateDiff("ss", st.Created, st.Ended)%60))
                     .Substring(
                         ("0" +
                          SqlFunctions.StringConvert((double) SqlFunctions.DateDiff("ss", st.Created, st.Ended)%60))
                             .Length - 2, 2)),
            Ordertime =
                (SqlFunctions.StringConvert((double) SqlFunctions.DateDiff("ss", st.Accepted, st.Ended)/60) +
                 ":" +
                 ("0" +
                  SqlFunctions.StringConvert((double) SqlFunctions.DateDiff("ss", st.Accepted, st.Ended)%60))
                     .Substring(
                         ("0" +
                          SqlFunctions.StringConvert(
                              (double) SqlFunctions.DateDiff("ss", st.Accepted, st.Ended)%60)).Length - 2, 2)),
            st.Message

我知道我应该使用viewmodel来做到这一点,但是因为它们是在查询中创建的,所以我会停留在Totaltime和Ordertime上。

1 个答案:

答案 0 :(得分:1)

您可以创建一个新的具体类并执行select new而不是select new Example

public class Example
{
    public string ID { get; set; }
    public string Filename { get; set; }
}

您可以使用LINQ获取一个列表,例如:

List<Example> data = (from x in events
                      group x by x.GetMessageFields() into grouping
                      let y = grouping.Select(x => x.GetFilename()).ToList()
                      select new Example
                      {
                          ID = grouping.Key,
                          Filename = y.First()
                      }).ToList();

如果您有模型类,可以立即向其添加List<Example>并使用它:

model.ExamplesList = data;