c# - ValueTuple.Create 中的命名参数
问题描述
我正在玩 C# 中的值元组。
首先是一些演示数据:
#region Data
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 List<Category> Categories { get; } = new List<Category>()
{
new Category(){Name="Beverages", ID=001},
new Category(){ Name="Condiments", ID=002},
};
public List<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},
};
}
#endregion
然后是使用演示数据的方法:
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);
}
到目前为止没有问题。
但是,如果我想要按产品名称排序的结果,我可以执行以下操作:
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);
}
在这里我有我的问题:使用 ValueTuple.Create(...) 时,我可以命名参数,因此可以在 OrderBy 中使用这些名称
我希望有这样的事情:
select ValueTuple.Create(CategoryId : category.ID, ProductName : prod.Name)
然后在我的 orderBy 中使用该名称:
OrderBy(e => e.ProductName)
解决方案
您可以直接在您的内部创建一个命名元组Select
并明确指出名称:
(
from category in data.Categories
join prod in data.Products on category.ID equals prod.CategoryID
select (CategoryId: category.Id, ProductName: prod.Name)
).OrderBy(e => e.ProductName);
推荐阅读
- php - 如何在我的 foreach 语句中放置一个 href 链接?
- typescript - 如何验证返回类型字符串的 JSON 模式| 使用打字稿未定义
- php - 通过 curl 发送较大文件的问题
- vsphere - ova 导入失败,似乎与 ovf 中的 BootOrderSection 标签有关
- linux - SSH命令中的本地和远程变量如何在本地可用
- angularjs - 在角度控制器中使用文本角度函数?
- ruby - 调用 `super` 的时机
- java - 在 Windows 机器中连接到 postgress 数据库时出现异常
- asp.net-mvc - 在 javascript 文件中使用时,asp.net 翻译功能会为非英文字符提供垃圾字母
- python - 我从安装requirement.txt 后尝试运行应用程序?