Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “我怎么能?”;“爆炸”;将一组ID集合合并为一组不同的ID?_C#_.net_Linq - Fatal编程技术网

C# “我怎么能?”;“爆炸”;将一组ID集合合并为一组不同的ID?

C# “我怎么能?”;“爆炸”;将一组ID集合合并为一组不同的ID?,c#,.net,linq,C#,.net,Linq,假设我有这个LINQ查询(在.NET 4.0上): 我需要的是一个“单个”集合,其中包含来自每个myObj的每个服务集合的ID列表。此列表必须具有不同的值。编辑:已更新,假设初始查询应为: IEnumerable<IEnumerable<int>> listService = ...; (如果这不是你想要的,请澄清这个问题-目前它相当混乱。)编辑:更新假设初始查询应该是: IEnumerable<IEnumerable<int>> listSer

假设我有这个LINQ查询(在.NET 4.0上):


我需要的是一个“单个”集合,其中包含来自每个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
-集合还是(属性)它呢?:O
Services
是一个集合(我写了这个)。Distinct在该示例中不起作用…我不需要Distinct集合,但需要每个服务集合的ID的不同列表…是的,我知道这一点…但这是另一个LINQ查询!我想用一个:)@markzzz:我必须同意,你的问题很难理解。两个LINQ查询并不意味着执行一个查询需要更多的时间,因为LINQ是用
IEnumerable
进行lazely计算的。我已经向您展示了如何获取所有对象的所有服务的所有不同ID。你还需要知道什么?事实上,不,这个查询不能满足我的需要。obj.服务?obj是一项服务…@markzzz:编辑了我的答案。但是你下次上课的时候应该给我们看看。您的意思是“服务包含这些ID”。但是(继承)服务是一个
int
-集合还是(属性)它呢?:O
Services
是一个集合(我写了这个)。Distinct在该示例中不起作用…我不想要Distinct集合,但是每个服务集合的ID的不同列表…不幸的是,我认为它不起作用。它在myObj上显示:“调用'SelectMany'时类型推断失败”。Services@markzzz嗯,这意味着我没有正确地解释你们的类是什么样子的。尝试将myObj.Services调用类型转换为它实现的任何
IEnumerable
。不幸的是,我认为它不会起作用。它在myObj上显示:“调用'SelectMany'时类型推断失败”。Services@markzzz嗯,这意味着我没有正确地解释你们的类是什么样子的。尝试将myObj.Services调用类型转换为它实现的任何
IEnumerable