Именованные параметры в ValueTuple.Create (2) - PullRequest
0 голосов
/ 15 марта 2019

В другом SO Вопрос я спросил об именованных параметрах в ValueTuple.Create. Но так как мой пример кода не соответствовал моей проблеме, я не получил ответ, который хотел. Итак, снова поехали:

Первые демонстрационные данные:

public class Product
    {
        public string Name { get; set; }
        public int CategoryID { get; set; }
    }

    public class Category
    {
        public string Name { get; set; }
        public int ID { get; set; }
    }

    public class Data
    {
        public IQueryable<Category> Categories { get; } = new List<Category>()
        {
            new Category(){Name="Beverages", ID=001},
            new Category(){ Name="Condiments", ID=002},
        }.AsQueryable();

        public IQueryable<Product> Products { get; } = new List<Product>()
        {
            new Product{Name="Cola",  CategoryID=001},
            new Product{Name="Tea",  CategoryID=001},
            new Product{Name="Mustard", CategoryID=002},
            new Product{Name="Pickles", CategoryID=002},
        }.AsQueryable();

    }

ПРИМЕЧАНИЕ IQueryable

Тогда к моей проблеме:

    public static IEnumerable<(int CategoryId, string ProductName)> GetList()
    {
        var data = new Data();
        return
            (from category in data.Categories
                join prod in data.Products on category.ID equals prod.CategoryID
                select ValueTuple.Create(category.ID, prod.Name)).OrderBy(e => e.Item2);
    }

Но если я хочу отсортировать результат по названию продукта, я должен использовать OrderBy(e => e.Item2). Могу ли я каким-то образом избавиться от имен Item1 и Item2 в моем Ордене с помощью

Поскольку у меня есть интерфейс IQueryable, я должен использовать ValueTuple.Create

1 Ответ

0 голосов
/ 15 марта 2019

Я нашел обходной путь,: я мог бы сделать случай типа:

    public static IEnumerable<(int CategoryId, string ProductName)> GetList()
    {
        var data = new Data();
        return
            (from category in data.Categories
                join prod in data.Products on category.ID equals prod.CategoryID
                select ((int CategoryId, string ProductName))ValueTuple.Create(category.ID, prod.Name)).OrderBy(e => e.ProductName);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...