Прежде всего вы должны знать, что Lr.CmRlsd3D.Count();
считает количество определенных элементов внутри свойства строки, а не количество наборов результатов, как предполагалось.Также у вас есть множество проблем:
a) Несколько предложений where
являются избыточными и могут не возвращать желаемый результат.Используйте оператор &&
для нескольких where
условий, которые используют логические AND
.
b) select new { c.JobNumber }
использует анонимный тип, который я считаю ненужным.select c.JobNumber
достаточно.
c) ToString()
для запроса LINQ может возвращать полностью определенное имя типа набора результатов вместо значения.Вам нужно использовать итерацию цикла FirstOrDefault()
, SingleOrDefault()
или foreach
, чтобы получить из него строковое значение.
Поэтому вам следует использовать эту настройку:
1) Использовать целочисленное свойствовнутри класса viewmodel для хранения счетчика.
public int CmRlsd3D { get; set; }
2) Измените тип возвращаемого метода на int
и измените запрос, используя Count()
, чтобы получить количество записей, как показано в примере ниже:
public int CMRlsd3Days()
{
WorkflowEntities db = new WorkflowEntities();
int CurrentYear = DateTime.Now.Year;
DateTime firstday = new DateTime(CurrentYear, 1, 25);
DateTime prevyear = new DateTime(2017, 10, 1);
DateTime Yday = DateTime.Today.AddDays(-2);
string Dayofweek = Yday.DayOfWeek.ToString();
int day1 = (int)(DateTime.Now.DayOfWeek);
if (day1 == 1)
{
Yday = DateTime.Today.AddDays(-4);
}
var count = (from c in db.OrderDetailCheckHistories
join d in db.OrderDetails on c.JobNumber equals d.JobNumber
where (c.DateTime > firstday && c.DateTime < Yday)
&& (c.FieldName == "Released" || c.FieldName == "Pre Release")
&& ((c.StockCode.Contains("-CA") && !(c.StockCode.Contains("-CAB"))) ||
c.StockCode.Contains("-CM") || c.StockCode.Contains("-LP"))
select c.JobNumber).Count();
return count;
}
3) Назначьте свойство по результату метода.
public ActionResult Laser()
{
LaserRepo Lr = new LaserRepo();
Lr.CmRlsd3D = CMRlsd3Days();
return View(Lr);
}
// alternative using property get definition
public int CmRlsd3D
{
get
{
return CMRlsd3Days();
}
}
4) На странице внутреннего вида используйте @model LaserRepo
и @Model.CmRlsd3D
, чтобы отобразить его.