我有对象的列表,从中我想在一起基础上AnalyteID
,MethodID
和InstrumentID
领域组数据库填充TargetList
,但Unit
领域将被保存在适用于每个分组对象的列表中。LINQ分组多个字段,并把非唯一的领域进入名单
此外,只有其中一个可用单位有一个目标分配给它。因此,在分组过程中,我需要检查一下目标是否可用,如果有,请跳过创建单元列表。
的TargetList
对象包含以下属性:
public int id { get; set; }
public int AnalyteID { get; set; }
public string AnalyteName { get; set; }
public int MethodID { get; set; }
public string MethodName { get; set; }
public int InstrumentID { get; set; }
public string InstrumentName { get; set; }
public int UnitID { get; set; }
public string UnitDescription { get; set; }
public decimal TargetMean { get; set; }
public List<Unit> Units { get; set; }
我使用LINQ多分组的方法:
TargetList.GroupBy(x => new { x.AnalyteID, x.MethodID, x.InstrumentID })...
但不确定如何检查如果目标不存在,则在提取当前组中的所有可用单元之前的行中的目标。
分组效果很好,预计数据将是'Target'类型,但是您需要发布什么内容,如果需要,您可以使用'SelectMany'来展平'Units' –
我无法很好地理解您的意思。什么是'目标'。一行意味着'目标'? – sinanakyazici
返回的每一行实际上都是一个“目标”对象。任何具有分配的TargetMean的Target都只返回一行(因为只有一个单位可以分配给Target),但是如果没有TargetMean可用,SP返回的行数与UnitID一样多对于分析物/方法/仪器组合,因此我需要对返回的行进行分组,并将所有可用单位(对于没有TargetMean的每个目标组合)进行分组,并将它们放入列表中,希望这是一个小例子更清晰 – Sandman