我正在使用 LINQ 查询。我想要做的是对 Start
中的数据进行排序,然后根据检索到的行是否将 IsAndroid 或 IsIos 设置为 true 来选择 AndroidSpeeds 或 IOSSpeeds 的数据。
这是我到目前为止的查询:
List<LogStart> Start1 = Start
.Where(x => x.IsPhysical == true)
.OrderBy(g => g.DateYYMMDD)
.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();
但是,有一个问题。它指着。哪里和说的是
Program.cs(46,46): Error CS1061: 'LogStart' does not contain a definition for 'Where' and no accessible extension method 'Where' accepting a first argument of type 'LogStart' could be found (are you missing a using directive or an assembly reference?) (CS1061) (Cosmos)
有人知道可能出现什么问题以及如何修复它吗?
供引用,同一文件中的以下语句可以正常工作:
List<LogStart> Start2 = Start
.Where(x => x.IsPhysical == true)
.GroupBy(x => x.DateYYMMDD)
.OrderBy(g => g.Key)
.Select(g => new Start2
{
DateYYMMDD = g.Key,
Devices = g.Count(),
AndroidDBSpeed = (int?) g.Where(gx => gx.IsAndroid).Select(gx => (int?) gx.DBSpeed).DefaultIfEmpty().Average(),
AndroidCPUSpeed = (int?)g.Where(gx => gx.IsAndroid).Select(gx => (int?)gx.CPUSpeed).DefaultIfEmpty().Average(),
IOSDBSpeed = (int?)g.Where(gx => gx.IsIos).Select(gx => (int?)gx.DBSpeed).DefaultIfEmpty().Average(),
IOSCPUSpeed = (int?)g.Where(gx => gx.IsIos).Select(gx => (int?)gx.CPUSpeed).DefaultIfEmpty().Average(),
})
.ToList();
最佳答案
分组是第二项工作的基础。
如果您不想分组,那么我怀疑您正在寻找类似的东西
var Start1 = Start
.Where(x => x.IsPhysical == true)
.OrderBy(g => g.DateYYMMDD)
.Select(g => new Start2
{
AndroidDBSpeed = g.IsAndroid ? (int?) g.DBSpeed : (int?) null,
AndroidCPUSpeed = g.IsAndroid ? (int?) g.CPUSpeed : (int?) null,
IOSDBSpeed = gx.IsIos ? (int?) g.DBSpeed : (int?) null,
IOSCPUSpeed = gx.IsIos ? (int?) g.CPUSpeed : (int?) null,
})
.ToList();
关于c# - 如何使用 LINQ 将 .Where 添加到 .Select 到对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680690/