C# “我怎么能?”;“爆炸”;将一组ID集合合并为一组不同的ID?
假设我有这个LINQ查询(在.NET 4.0上):C# “我怎么能?”;“爆炸”;将一组ID集合合并为一组不同的ID?,c#,.net,linq,C#,.net,Linq,假设我有这个LINQ查询(在.NET 4.0上): 我需要的是一个“单个”集合,其中包含来自每个myObj的每个服务集合的ID列表。此列表必须具有不同的值。编辑:已更新,假设初始查询应为: IEnumerable<IEnumerable<int>> listService = ...; (如果这不是你想要的,请澄清这个问题-目前它相当混乱。)编辑:更新假设初始查询应该是: IEnumerable<IEnumerable<int>> listSer
我需要的是一个“单个”集合,其中包含来自每个myObj的每个服务集合的ID列表。此列表必须具有不同的值。编辑:已更新,假设初始查询应为:
IEnumerable<IEnumerable<int>> listService = ...;
(如果这不是你想要的,请澄清这个问题-目前它相当混乱。)编辑:更新假设初始查询应该是:
IEnumerable<IEnumerable<int>> listService = ...;
(如果这不是你想要的,请澄清这个问题——目前它相当混乱。)在查询语法中:
IEnumerable<int> listService = (
from MyObject myObj in new MyObjects()
from id in myObj.Services).Distinct();
IEnumerable列表服务=(
来自新MyObject()中的MyObject MyObject
来自myObj.Services.Distinct()中的id;
在查询语法中:
IEnumerable<int> listService = (
from MyObject myObj in new MyObjects()
from id in myObj.Services).Distinct();
IEnumerable列表服务=(
来自新MyObject()中的MyObject MyObject
来自myObj.Services.Distinct()中的id;
因为您没有显示类的内容,所以我实现了从您的描述中可以猜到的内容。这和你的物品匹配吗
class Service
{
public int ID { get; set; }
public string Name { get; set; }
}
class MyObject
{
public IEnumerable<Service> Services { get; set; }
}
class MyObjects : List<MyObject>
{
}
我可以像这样获得不同的ID:
var distinctIDs = (from myObj in new MyObjects()
from service in myObj.Services
select service.ID).Distinct();
以下测试程序:
static void Main(string[] args)
{
var objects = new MyObjects();
var distinctIDs = (from myObj in new MyObjects()
from service in myObj.Services
select service.ID).Distinct();
var notDistinctIDs = from myObj in new MyObjects()
from service in myObj.Services
select service.ID;
foreach (var id in distinctIDs)
{
Console.WriteLine("Distinct ID: {0}", id);
}
Console.WriteLine("---");
foreach (var id in notDistinctIDs)
{
Console.WriteLine("Not Distinct ID: {0}", id);
}
}
印刷品:
Distinct ID: 1
Distinct ID: 2
Distinct ID: 3
Distinct ID: 4
---
Not Distinct ID: 1
Not Distinct ID: 2
Not Distinct ID: 3
Not Distinct ID: 4
Not Distinct ID: 1
因为您没有显示类的内容,所以我实现了从您的描述中可以猜到的内容。这和你的物品匹配吗
class Service
{
public int ID { get; set; }
public string Name { get; set; }
}
class MyObject
{
public IEnumerable<Service> Services { get; set; }
}
class MyObjects : List<MyObject>
{
}
我可以像这样获得不同的ID:
var distinctIDs = (from myObj in new MyObjects()
from service in myObj.Services
select service.ID).Distinct();
以下测试程序:
static void Main(string[] args)
{
var objects = new MyObjects();
var distinctIDs = (from myObj in new MyObjects()
from service in myObj.Services
select service.ID).Distinct();
var notDistinctIDs = from myObj in new MyObjects()
from service in myObj.Services
select service.ID;
foreach (var id in distinctIDs)
{
Console.WriteLine("Distinct ID: {0}", id);
}
Console.WriteLine("---");
foreach (var id in notDistinctIDs)
{
Console.WriteLine("Not Distinct ID: {0}", id);
}
}
印刷品:
Distinct ID: 1
Distinct ID: 2
Distinct ID: 3
Distinct ID: 4
---
Not Distinct ID: 1
Not Distinct ID: 2
Not Distinct ID: 3
Not Distinct ID: 4
Not Distinct ID: 1
嗯,不是真的!ID不是ID的集合。服务是ID的集合。因此我无法访问服务。Ids@markzzz当前位置我发现你的问题很难理解。一个简短但完整的例子会让它更加清晰。你声称你有一个
IEnumerable
,但我们不知道里面有什么。如果你能澄清你的问题,我相信我们可以帮助你-但现在我迷路了。希望所举的例子现在更清楚!否则请让我知道,我会努力改进:)@markzzz:老实说,这并不是很清楚-您最初的查询仍然涉及ListService
类型。该类型是否存在,或者服务是否仅返回一组整数?“服务仅返回一组整数?”。对但在我的第一行写道:“服务是ID的集合”嗯,不是真的!ID不是ID的集合。服务是ID的集合。因此我无法访问服务。Ids@markzzz当前位置我发现你的问题很难理解。一个简短但完整的例子会让它更加清晰。你声称你有一个IEnumerable
,但我们不知道里面有什么。如果你能澄清你的问题,我相信我们可以帮助你-但现在我迷路了。希望所举的例子现在更清楚!否则请让我知道,我会努力改进:)@markzzz:老实说,这并不是很清楚-您最初的查询仍然涉及ListService
类型。该类型是否存在,或者服务是否仅返回一组整数?“服务仅返回一组整数?”。对但在我的第一行中写道:“服务是ID的集合”是的,我知道这一点……但这是另一个LINQ查询!我想用一个:)@markzzz:我必须同意,你的问题很难理解。两个LINQ查询并不意味着执行一个查询需要更多的时间,因为LINQ是用IEnumerable
进行lazely计算的。我已经向您展示了如何获取所有对象的所有服务的所有不同ID。你还需要知道什么?事实上,不,这个查询不能满足我的需要。obj.服务?obj是一项服务…@markzzz:编辑了我的答案。但是你下次上课的时候应该给我们看看。您的意思是“服务包含这些ID”。但是(继承)服务是一个int
-集合还是(属性)它呢?:OServices
是一个集合(我写了这个)。Distinct在该示例中不起作用…我不需要Distinct集合,但需要每个服务集合的ID的不同列表…是的,我知道这一点…但这是另一个LINQ查询!我想用一个:)@markzzz:我必须同意,你的问题很难理解。两个LINQ查询并不意味着执行一个查询需要更多的时间,因为LINQ是用IEnumerable
进行lazely计算的。我已经向您展示了如何获取所有对象的所有服务的所有不同ID。你还需要知道什么?事实上,不,这个查询不能满足我的需要。obj.服务?obj是一项服务…@markzzz:编辑了我的答案。但是你下次上课的时候应该给我们看看。您的意思是“服务包含这些ID”。但是(继承)服务是一个int
-集合还是(属性)它呢?:OServices
是一个集合(我写了这个)。Distinct在该示例中不起作用…我不想要Distinct集合,但是每个服务集合的ID的不同列表…不幸的是,我认为它不起作用。它在myObj上显示:“调用'SelectMany'时类型推断失败”。Services@markzzz嗯,这意味着我没有正确地解释你们的类是什么样子的。尝试将myObj.Services调用类型转换为它实现的任何IEnumerable
。不幸的是,我认为它不会起作用。它在myObj上显示:“调用'SelectMany'时类型推断失败”。Services@markzzz嗯,这意味着我没有正确地解释你们的类是什么样子的。尝试将myObj.Services调用类型转换为它实现的任何IEnumerable