В другом 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