Выберите Все отдельные значения в столбце, используя LINQ

Я создал веб-Api в VS 2012. Я пытаюсь получить все значение из одного столбца "Категория", то есть все уникальное значение, я не хочу, чтобы список возвращался с дубликатами.

Я использовал этот код для получения продуктов в определенной категории. Как получить полный список категорий (Все уникальные значения в столбце Категория)?

public IEnumerable<Product> GetProductsByCategory(string category)
    {
        return repository.GetAllProducts().Where(
            p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));
    }

Ответы

Ответ 1

Чтобы иметь уникальные категории:

var uniqueCategories =  repository.GetAllProducts()
                                  .Select(p=>p.Category)
                                  .Distinct();

Ответ 2

var uniq = allvalues.GroupBy(x => x.Id).Select(y=>y.First()).Distinct();

Легко и просто

Ответ 3

Мне нужно найти различные строки со следующими деталями класса: Scountry
columns: countryID, countryName, isactive
В этом нет первичного ключа. Мне удалось выполнить следующие запросы

public DbSet<SCountry> country { get; set; }
    public List<SCountry> DoDistinct()
    {
        var query = (from m in country group m by new { m.CountryID, m.CountryName, m.isactive } into mygroup select mygroup.FirstOrDefault()).Distinct();
        var Countries = query.ToList().Select(m => new SCountry { CountryID = m.CountryID, CountryName = m.CountryName, isactive = m.isactive }).ToList();
        return Countries;
    }