c# linq to list - 2 списка с одинаковыми именами полей и результатами, но только 1 работает с json ()? - PullRequest
1 голос
/ 20 июня 2020

Итак, у меня есть request1 и request2 с одинаковыми именами полей Id & StartYear

    public JsonResult GetFiscalYear(int? Level1Id, string filterText)
    {

        var request1 = (from FS in _db.FeeSchedules
                        join FIL in _db.FeeItemLines on FS.Id equals FIL.FeeScheduleId
                        join FY in _db.FiscalYears on FIL.FiscalYearId equals FY.Id
                        where FS.Level1Id == Level1Id
                        select new { FY.Id, FY.StartYear })
                          .OrderBy(o => o.StartYear)
                          .GroupBy(o => o.StartYear).ToList();

        var request2 = _db.FiscalYears.ToList();

        return Json(request1);
    }

По какой-то причине request1 не работает, а request2 работает, оба имеют одинаковые имена полей, но похоже, что вывод списка request1 не работает с функцией Json(). Но список request2 работает.

Боковое примечание, как называется запрос в request1 vs request2? Я думаю, что они оба LINQ с Lambda?

То, что я имею в виду под этим, не работает:

Это раскрывающееся меню анализирует json из result2 но не result1

    @(Html.Kendo().DropDownList()
          .Name("FiscalYearId")
          .HtmlAttributes(new { style = "width:110px" })
          .OptionLabel("--Select--")
          .DataTextField("StartYear")
          .DataValueField("Id")
          .DataSource(source =>
          {
              source.Read(read =>
          {
              read.Action("GetFiscalYear", "Report")
               .Data("filterFiscalYear");
          }).ServerFiltering(true);
          })
          .Enable(false)
          .AutoBind(false)
          .CascadeFrom("Level1Id")
          .Value(sessionUser.CurrentFiscalYearId.ToString()
          )
    )

request1 приводит к следующему:

enter image description here

request2 приводит к следующему:

enter image description here

1 Ответ

1 голос
/ 20 июня 2020

Вы можете Выбрать Первый сгруппированный результат для соответствия request2 и заполнить не дублированный StartYear, как в следующем коде:

var request1 = (from FS in _db.FeeSchedules
                join FIL in _db.FeeItemLines on FS.Id equals FIL.FeeScheduleId
                join FY in _db.FiscalYears on FIL.FiscalYearId equals FY.Id
                where FS.Level1Id == Level1Id
                select new { FY.Id, FY.StartYear })
                  .OrderBy(o => o.StartYear)
                  .GroupBy(o => o.StartYear)
                  .Select(x => x.First()).ToList();

Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...