using System.Linq //Add this to the namespace, if you have not added
В C# LINQ предоставляет возможность фильтровать данные, используя Where
, Select
, GroupBy
et c, и они называются методами расширения. Чтобы использовать эти методы расширения, вам нужно добавить System.Linq
пространство имен, которое является частью сборки System.Core
, которая обеспечивает доступ к классам, поддерживающим запросы, использующие встроенный в язык запрос
Программа .cs (46,46): Ошибка CS1061: «LogStart» не содержит определения «Где», и нет доступного метода расширения «Где», где можно найти первый аргумент типа «LogStart» (вы пропустили директиву using или ссылка на сборку?) (CS1061) (Космос)
РЕДАКТИРОВАТЬ : Из последующих обновлений
Для использования Где , вы должны убедиться, что тип реализует IEnumerable , а в этой строке g.Where(gx => gx.IsAndroid).
g
имеет тип LogStart
и не реализует IEnumerable , поэтому вы не может использовать расширение Where
для него
Обратите внимание на мои комментарии, что следующий оператор c# в том же файле работает просто отлично.
Это работает, потому что ваш делают GroupBy
на Collection , что означает, что (int?) g.Where(gx => gx.IsAndroid)
g имеет тип IGrouping , который является IEnumerable, который дополнительно имеет ключ
Чтобы решить, с вашим исходным кодом вы можете попробуйте Cast<IEnumberable>
, затем используйте .Where
, как показано ниже
List<LogStart> Start1 = Start
.Where(x => x.IsPhysical == true)
.OrderBy(g => g.DateYYMMDD).Cast<IEnumerable<LogStart>>()
List<LogStart> Start1 = Start
.Where(x => x.IsPhysical == true)
.OrderBy(g => g.DateYYMMDD).Cast<IEnumerable<LogStart>>()
.Select(g => new Start2
{
AndroidDBSpeed = (int?)g.Where(gx => gx.IsAndroid).Select(gx => (int?)gx.DBSpeed).DefaultIfEmpty(),
AndroidCPUSpeed = (int?)g.Where(gx => gx.IsAndroid).Select(gx => (int?)gx.CPUSpeed).DefaultIfEmpty(),
IOSDBSpeed = (int?)g.Where(gx => gx.IsIos).Select(gx => (int?)gx.DBSpeed).DefaultIfEmpty(),
IOSCPUSpeed = (int?)g.Where(gx => gx.IsIos).Select(gx => (int?)gx.CPUSpeed).DefaultIfEmpty(),
})
.ToList();