- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
考虑到下面的 C# 控制台应用程序代码,使用
我应该如何修改它以替换行:
foreach (Product product in productsByCategory[category])
通过代码行
foreach (Product product in productsByCategory[category][Id])
?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace myQuestion
{
class Program
{
static void Main(string[] args)
{
var products = new List<Product>
{
new Product { Id = 1, Category = "Garden", Value = 15.0 },
new Product { Id = 1, Category = "Garden", Value = 40.0 },
new Product { Id = 3, Category = "Garden", Value = 210.3 },
new Product { Id = 4, Category = "Pets", Value = 2.1 },
new Product { Id = 5, Category = "Electronics", Value = 19.95 },
new Product { Id = 6, Category = "Pets", Value = 21.25 },
new Product { Id = 7, Category = "Pets", Value = 5.50 },
new Product { Id = 8, Category = "Garden", Value = 13.0 },
new Product { Id = 9, Category = "Automotive", Value = 10.0 },
new Product { Id = 10, Category = "Electronics", Value = 250.0 }
};
ILookup<string, Product> productsByCategory =
products.ToLookup( p => p.Category);
string category = "Garden";
int Id = 1;
foreach (Product product in productsByCategory[category])
{
Console.WriteLine("\t" + product);
}
Console.ReadLine();
}
}
public sealed class Product
{
public int Id { get; set; }
public string Category { get; set; }
public double Value { get; set; }
public override string ToString()
{
return string.Format("[{0}: {1} - {2}]", Id, Category, Value);
}
}
}
更新:
这是一个人为的示例,旨在学习 C# 的概念 ToLookup Method .
作为引用,我是在阅读the David Andres' answer to question "What is the point of Lookup?" 后才想到这个问题的。 :
"A Lookup will map to potentially several values.
Lookup["Smith"]["John"] will be a collection of size one billion."
我想重现。
还是我理解错了?
最佳答案
不确定我是否正确理解了您的需求,但您为什么不能这样做:
foreach (Product product in productsByCategory[category].Where(x=> x.Id == Id))
或者使用匿名对象:
var productsByCategory = products.ToLookup(p => new { p.Category, p.Id });
string category = "Groceries";
int Id = 1;
foreach (Product product in productsByCategory[new {Category = category, Id= Id}])
{
Console.WriteLine("\t" + product);
}
这是一个非常相似的问题,由 Servy 提供额外的解决方案
关于c# - ToLookup() 如何使用多个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734454/
鉴于此: [ ("A","A122"); ("A","A123"); ("B","B122"); ("B","B123"); ("C","C122"); ] 是
我正在研究将可枚举序列转换为字典类型数据结构的 Enumerable.ToLookup API。可以在此处找到更多详细信息: https://msdn.microsoft.com/en-us/libr
LINQ 提供的 .ToLookup 函数有没有办法要求多个键? 我承认这乍一看似乎不直观,我预计没有实际的方法可以做到这一点,但我希望有人知道方法。 我基本上希望能够通过两个值进行查找,例如 str
考虑到下面的 C# 控制台应用程序代码,使用 我应该如何修改它以替换行: foreach (Product product in productsByCategory[category]) 通过代码行
我有一个如下所示的列表: var products = new List { new Product { Id = 1, Category = "Electronics", Value = 1
var tmpProjection = myCollection.ToLookup(t => t.SomeBoolValue); var listOneFinal = tmpProjection[tr
我正在尝试转 IEnumerable>进入 ILookup使用以下代码: var list = new List>() { new KeyValuePair("London", null),
我有一个巨大的点数据类型列表和一个相等大小的双列表。大小可能在 1000000 左右。两个列表都来自不同的类。 List XYPair; E.g. { (10,10),(10,10).......(
.ToLookup 返回 ILookup . ILookup还实现了接口(interface) IEnumerable> . .GroupBy 返回 IEnumerable> . ILookup 具有
LINQ ToDictionary 和 ToLookup 有什么区别?他们似乎在做同样的事情。 最佳答案 字典是一个 1:1 映射(每个键映射到一个值),并且字典是事后可变(可编辑)的。 查找是一个
我有一个每小时运行一次的 PowerShell 脚本,它基本上通过滴灌过程更新产品信息。该脚本在开发环境中失败,但在生产和质量中继续工作。故障点在使用 LINQ 的线路上。这是脚本: $product
我有以下产品列表 public sealed class Product { public int Id { get; set; } public string Category {
我是一名优秀的程序员,十分优秀!