C#LINQ GroupBy error在选择列表中只能指定一个表达式

C#LINQ GroupBy error在选择列表中只能指定一个表达式,c#,linq,C#,Linq,我有一个Linq查询,我将它按3个字段分组,它返回结果,我想根据键获取分组集合的字段,但当我使用下面的查询时,它会给我错误信息 “当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。” 下面是我的问题 var patientResults = context.GetTable<PatientResult>(). Where(r => r.MeasurementTime < filterVal

我有一个Linq查询,我将它按3个字段分组,它返回结果,我想根据键获取分组集合的字段,但当我使用下面的查询时,它会给我错误信息

当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。”

下面是我的问题

var patientResults = context.GetTable<PatientResult>().
              Where(r =>
                      r.MeasurementTime < filterValues.DateTo.AddDays(1).Date
                      && r.MeasurementTime >= filterValues.DateFrom
                      && devicesFilter.Contains(r.DeviceId)).
                       GroupBy(x => new { x.MeasurementTime, x.Model, x.DeviceId });


var patientResults12 =patientResults.Select(x => new PatientMeasurementResult()
                 {
                     MeasurementTime = x.Key.MeasurementTime,
                     Model = x.Key.Model,
                     DeviceId = x.Key.DeviceId,
                     PatientId = x.FirstOrDefault().PatientId,
                     PatientName = x.FirstOrDefault().PatientName
                 });
var patientResults=context.GetTable()。
其中(r=>
r、 度量时间=filterValues.DateFrom
&&DeviceFilter.Contains(r.DeviceId))。
GroupBy(x=>new{x.MeasurementTime,x.Model,x.DeviceId});
var patientResults12=patientResults.Select(x=>new PatientMeasureResult())
{
MeasurementTime=x.Key.MeasurementTime,
Model=x.Key.Model,
DeviceId=x.Key.DeviceId,
PatientId=x.FirstOrDefault().PatientId,
PatientName=x.FirstOrDefault().PatientName
});
我想要两个元素PatientId和PatientName,我不想在groupby中包含它们 如果我只为PatientId或PatientName指定FirstOrDefault(),效果很好,但当我同时为这两个指定时,会出现上述错误。

只需调用FirstOrDefault()一次,如下所示:

var patientResults12 = patientResults.Select(x =>
{
    var patientMeasurementResult = new PatientMeasurementResult()
    {
        MeasurementTime = x.Key.MeasurementTime,
        Model = x.Key.Model,
        DeviceId = x.Key.DeviceId,
    };

    var result = x.FirstOrDefault();

    if (result != null)
    {
        patientMeasurementResult.PatientId = result.PatientId;
        patientMeasurementResult.PatientName = result.PatientName;
    }

    return patientMeasurementResult;
});

你为什么在x上做FirstOrDefault。为什么不能执行x.Key.Patientid和x.Key.Patientname?Patientid和Patientname是非关键元素,因此不能在group by中使用它们,因此它们不能是键,也不能用作x.Key.Patientid,重要的是它们可以为空PatientResult类的结构是什么。