У меня есть список объектов (FilesInfo), содержащих объекты (LanguageInfo). LanguageInfo - это объект, который содержит дополнительные объекты для LanguageName и LanguageId. LanguageName и LanguageId также являются объектом, который (наконец) содержит строковое значение.LInq GroupBy по объекту и всем его значениям свойств
Я хочу сгруппировать список файлов по языку. Это не работает (я полагаю, на вопрос по стоимости/эталонным сравнения магии):
var languageGroupings = data.FilesList.GroupBy(ufi => ufi.LanguageInfo);
(хотя это то, что я по существу пытается достичь)
Это делает:
var languageGroupings = data.FilesList.GroupBy(ufi => ufi.LanguageInfo.LanguageName.Value);
Теперь проблема заключается в том, что я не знаю, будет ли LanguageInfo содержать LanguageName или LanguageCode (или одно из других подобных свойств, ClientLanguageName, ClientLanguageCode), поэтому я в основном хочу сгруппировать файлы на основе всех значения свойств вложенные в LanguageInfo.
Как это сделать?
Это (уменьшенные) классов:
public class UniversalLanguageInfo
{
public int UniversalLanguageInfoId { get; set; }
public UniversalDataElement LanguageCode { get; set; }
public UniversalDataElement LanguageId { get; set; }
public UniversalDataElement LanguageName { get; set; }
public UniversalDataElement ClientLanguageCode { get; set; }
public UniversalDataElement ClientLanguageName { get; set; }
}
public class UniversalDataElement
{
public string Value { get; set; }
public DataFormats DataSource { get; set; }
public string OriginalName { get; set; }
public bool IsExcluded { get; set; }
}
public class UniversalFileInfo
{
public virtual UniversalDataFormat UniversalDataFormat { get; set; }
public UniversalLanguageInfo LanguageInfo { get; set; }
public UniversalDataElement FileName { get; set; }
public UniversalDataElement Id { get; set; }
public UniversalWordcount Wordcount { get; set; }
}
Так что я смущен .. что * точно * вы хотите Group By? Возможно, я просто неправильно понял, но то, что вы просите, кажется неэффективным .. Если свойство, находящееся под 'LanguageInfo', является нулевым или пустым, вы хотите, чтобы оно группировалось по другому свойству? Это звучит крайне дезорганизованно и противоположно тому, что Group By предназначено для –
@BviLLe_Kid - я хочу группировать весь объект LanguageInfo - если два файла в списке имеют одну и ту же языковую информацию, то их следует сгруппировать :) – Bartosz
так что информация о языке это собственный класс? –