Конвертировать день месяца в формат дня недели для таблицы в LINQ - PullRequest
0 голосов
/ 27 сентября 2018

для части моей программы мне нужно прочитать заданные значения за последнюю неделю, сгруппировать их по дням недели и затем отобразить их в таблице в MVC.Мне удалось отобразить длинный список числовых дней (с указанием повторений) с соответствующими данными, но мне нужно, чтобы формат был с понедельника по воскресенье, что означает, что он должен будет объединить значения, которые происходят в тот же день.

Мой контроллер:

  public ActionResult Index(string TimeState)
    {
        DateTime currentDate = DateTime.Now;

        DateTime today = DateTime.Today;
        DateTime week = DateTime.Today.AddDays(-7);
        string userID = User.Identity.GetUserId();
        string email = (from x in db.Users where x.Id == userID select x.Email).FirstOrDefault();



        IEnumerable<ValuesList> valuesList = from x in db.UsageDatas
                                             where week  <= x.Time && x.Time <= today && x.UserEmail == email                                                 
                                             select new ValuesList
                                             {
                                                 Dates = x.Time.Day.ToString(),
                                                 Values = x.Delta ,
                                             };


        State state = new State
        {
            state = TimeState,
            valuesLists = valueList,                                  
            selectedDate = "0"
        };
        return View(state);
    }

Вид:

        <div class="Table Heading"><h3>Recent Water Usage</h3></div>
    @{


    }

    <table class="greyGridTable">

        <thead>
            <tr>
                <th>Date</th>
                <th>Value</th>

            </tr>

        </thead>

        @foreach (var item in Model.valuesLists)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Dates)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Values)
                </td>

            </tr>
        }

    </table>
</div>

Модель:

   public class State
{

    public string state { get; set; }
    public IEnumerable<ValuesList> valuesLists { get;set;}
    public string TimeState { get; set; }
    public string selectedDate { get; set; }

}

public class ValuesList
{
  public string Dates { get; set; }
public string Values { get; set; }


}

как выглядит текущая таблица: примечание: еепоказ текущего дня месяца * Table

Мой LINQ довольно ограничен, поэтому любая информация будет высоко оценена.вот новая ошибка The new error

1 Ответ

0 голосов
/ 28 сентября 2018

Вы хотите добавить сегодняшние данные?Если да.

        DateTime today = DateTime.Today;
        DateTime tomorrow = today.AddDays(1);
        DateTime week = today.AddDays(-7); // or -6  think about it
        string userID = User.Identity.GetUserId();
        string email = (from x in db.Users where x.Id == userID select x.Email).FirstOrDefault();

        var valuesList = db.UsageDatas
            .Where(x => x.Time >= week && x.Time < tomorrow && x.UserEmail == email)
            //.AsEnumerable() //posible need it for execute sql before take DayOfWeek
            .GroupBy(x => x.Time.DayOfWeek)
            .Select(x => new
            {
                DayOfWeek = x.Key,
                Values = x.Select(m => m.Delta).Aggregate((a, b) => a + "," + b)
            })
            .OrderBy(m => m.DayOfWeek)
            .Select(x => new ValuesList
            {
                Dates = x.DayOfWeek.ToString(),
                Values = x.Values
            });

Группировка по DayOfWeek и агрегирование Delta, как вы хотите

Для суммы Deltas: (но это костыль)

 Values = x.Select(x =>
            {
                int.TryParse(x, out var value);
                return value;
            })
            .Sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...