Member 14330973 Ответов: 1

Добавление значений столбца в таблицу в соответствии с условием


У меня есть настольная программа.

он содержит 3 колонки
ля).ID, b).AGENCY_NAME C) метки

Теперь я хочу добавить метки столбца, если "AGENCY_NAME" похож, а затем вычислить среднее значение.
AGENCY_NAME МОЖЕТ БЫТЬ РАЗНЫХ ТИПОВ


Итак, код контроллера mvc.


public ActionResult TrainingInstitute(String agenda_no = "")
      {
          DisplayLndRep dn = new DisplayLndRep();
          DbAccess da = new DbAccess();
          dn.FeedbackDetailList5=new List<lnd_prgm>();
          dn.FeedbackDetailList5 = da.FindInstiStdCount(agenda_no);
          dn.app_count = dn.FeedbackDetailList5.Count;
          if(dn.app_count>0)
          {
           dn.ListArcGrid = new List<ReportLndFeedback>();
           dn.FeedbackDetailList4 = da.FindInstiPgmTypCount(agenda_no);
           dn.pg1_count = dn.FeedbackDetailList4.Count();
           dn.pg2_count = dn.app_count - dn.pg1_count;
           dn.score = da.FindTotalScore(agenda_no);
          //    dn.ListArcGrid = new List<ReportLndFeedback>();
        //   dn.ListTReports = da.FindTReports();

          //dn.AgendaDetailList = new List<AgendaDetails>();
          dn.PageSize = 10;
          }

          else
          {
              TempData["notice"] = "There is no such record for Training Institute." + agenda_no;
              return RedirectToAction("ReportModule", "Home");
          }

          return View(dn);
      }




ПРОБЛЕМА, С КОТОРОЙ Я СТАЛКИВАЮСЬ, ЗАКЛЮЧАЕТСЯ В ТОМ, КАК ОПРЕДЕЛИТЬ СЛЕДУЮЩУЮ ФУНКЦИЮ ТАК
ОПРЕДЕЛЕНИЕ ДЛЯ
FindTotalScore
Я не в состоянии развить эту логику, чтобы вычислить общие отметки.


public List<lnd_prgm> FindTotalScore(string searchField)
{
    context.Configuration.AutoDetectChangesEnabled = false;
    context.Configuration.LazyLoadingEnabled = false;
    List<lnd_prgm> rLst = new List<lnd_prgm>();
    searchField = searchField.ToLower();
    int i;

    rLst = (from c in context.lnd_prgm.Where(x => x.agency_name == searchField) orderby c.prgm_id select c).ToList();

    for (int i = 0; i < rLst.Count; i++)
    {
        i = i + rLst[i].pgm_avg;
    }
    return rLst;
}


Что я уже пробовал:

не в состоянии закодировать функцию для вычисления и последующего отображения.

1 Ответов

Рейтинг:
0

Maciej Los

Вы используете точное совпадение:

rLst = (from c in context.lnd_prgm.Where(x => x.agency_name == searchField) orderby c.prgm_id select c).ToList();

Но, если я вас хорошо понимаю, вы хотите получить агентства с похожими названиями (использование SQL Like "%whatever%" оператор):
rLst = (from c in context.lnd_prgm.Where(x => x.agency_name.Contains(searchField)) orderby c.prgm_id select c).ToList();
//lambda version:
//rLst = context.lnd_prgm
//        .Where(x => x.agency_name.Contains(searchField))
//        .OrderBy(x=>x.prgm_id)
//        .ToList()


Для получения более подробной информации, пожалуйста, смотрите: Перечислимый.Содержит Метод (System.Linq) | Microsoft Docs[^]