gpt4 book ai didi

c# - ValueTuple.Create 中的命名参数

转载 作者:太空狗 更新时间:2023-10-30 00:37:14 30 4
gpt4 key购买 nike

我正在研究 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);

关于c# - ValueTuple.Create 中的命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55178757/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com