Selecione vários campos da lista no Linq

No asp.net c # eu tenho uma estrutura:

public struct Data
{
    public int item1;
    public int item2;
    public int category_id;
    public string category_name;
}

e eu tenho uma lista desses. Eu quero selecionarcategory_id ecategory_name, executando umDISTINCT e finalmente umORDERBY emcategory_name.

Aqui está o que eu tenho agora:

List<Data> listObject = getData();
string[] catNames = listObject
                    .Select(i=> i.category_name)
                    .Distinct()
                    .OrderByDescending(s => s)
                    .ToArray();

Isso obviamente só recebe o nome da categoria. Minha pergunta é: como obtenho vários campos e em qual estrutura de dados armazenarei isso?string[])

EDITAR

Usando uma lista de estruturas não é definido em pedra. Se fosse aconselhável mudar minha estrutura de dados de apoio para facilitar as seleções (estarei escrevendo muitas delas), então eu ficaria feliz em receber recomendações.

questionAnswers(4)

yourAnswerToTheQuestion