C# 我怎样才能查看列表<;类型>;?

C# 我怎样才能查看列表<;类型>;?,c#,linq,concatenation,C#,Linq,Concatenation,我有以下代码: protected IList<MyObject> offerte; offerte = offerte.Union(from MyObject object in MyObjects select object).ToList(); 受保护的IList报价; offerte=offerte.Union(来自MyObjects中的MyObject对象 选择对象); 但是我得到了一个System.ArgumentNu

我有以下代码:

protected IList<MyObject> offerte;

offerte = offerte.Union(from MyObject object in MyObjects
                        select object).ToList();
受保护的IList报价;
offerte=offerte.Union(来自MyObjects中的MyObject对象
选择对象);
但是我得到了一个
System.ArgumentNullException
(可能是因为我在列表中添加了一个IEnumerable)


那么,我如何处理列表呢?

您得到了异常,因为
offerte
为空。尝试:

offerte = new List<MyObject>(MyObjects);
offerte=新列表(MyObjects);

您将获得异常,因为
offerte
为空。尝试:

offerte = new List<MyObject>(MyObjects);
offerte=新列表(MyObjects);

联合不是串联,请检查:。例如,两个具有相同值的集合的并集将产生相同的精确集合

您需要的是
Concat
(惊喜,惊喜):


但是,ArgumentNullException仍将发生,原因是未初始化提供的
offerte
(检查devdigital'答案)。

并集未连接,检查:。例如,两个具有相同值的集合的并集将产生相同的精确集合

您需要的是
Concat
(惊喜,惊喜):

但是,ArgumentNullException仍将发生,因为未初始化提供的
offerte
(请检查devdigital的回答)。

请尝试此

protected IList<MyObject> offerte = new  List<MyObject>(MyObjects); 

// do your stuff
protected IList offerte=新列表(MyObject);
//做你的事
试试这个

protected IList<MyObject> offerte = new  List<MyObject>(MyObjects); 

// do your stuff
protected IList offerte=新列表(MyObject);
//做你的事

> > p>主要的区别是,联合和连接是考虑数据是集合还是序列。

在并集的情况下,您将合并两组数据,这意味着如果两个列表中都有一个值,那么它将只保留一次,因此合并
{1,2,3}
{2,3,4}
将为您提供
{1,2,3,4}
(前提是您的自定义数据类型实现适当的接口并重写哈希函数,以便在LINQ中启用相等比较)

如果你想要连接你的数据,那么第二部分将被附加到第一个PAR,你将得到<代码> { 1, 2, 3,2, 3, 4 } < /C> 您想对数据做什么


另外,你不能得到半可枚举和半列表,每个列表都是一个IEnumerable,因为列表实现了这个接口。因为LINQ是惰性计算的,所以你只会得到一个查询。在你的情况下,你可以通过调用
.ToList()强制它进行急切的计算< /p> > 

,联合和级联的主要区别在于,您是否考虑了数据是集合还是序列。

在并集的情况下,您将合并两组数据,这意味着如果两个列表中都有一个值,那么它将只保留一次,因此合并
{1,2,3}
{2,3,4}
将为您提供
{1,2,3,4}
(前提是您的自定义数据类型实现适当的接口并重写哈希函数,以便在LINQ中启用相等比较)

如果你想要连接你的数据,那么第二部分将被附加到第一个PAR,你将得到<代码> { 1, 2, 3,2, 3, 4 } < /C> 您想对数据做什么



另外,你不能得到半可枚举和半列表,每个列表都是一个IEnumerable,因为列表实现了这个接口。因为LINQ是惰性计算的,所以你只会得到一个查询。在你的情况下,你可以通过调用
.ToList()强制它进行急切的计算
方法。

您只是忘记初始化对象,代码中没有任何错误。-1?为什么-1?我无法理解这些否决票…您的代码有一个基本问题(或者在这里不完整):您在声明对象后缺少对象的初始化,这就是您出现异常的原因。下面的答案针对您的第二个问题:LINQ中Union和Concat之间的差异,这更有趣!:)只需适当编辑您的帖子,它就不会被否决(希望如此)你只是忘了初始化你的对象,你的代码中没有任何错误。-1?为什么-1?我无法理解那些否决票…你的代码有一个基本问题(或者在这里是不完整的):您在声明对象后缺少对象的初始化,这就是您出现异常的原因。下面的答案针对您的第二个问题:LINQ中Union和Concat之间的差异,这更有趣!:)只需适当地编辑您的帖子,它就不会被否决(希望如此)事实上很奇怪。使用我的代码(我认为是错误的),我将一个列表与一个IEnumerable合并。然后,使用合并的结果(半列表,半Ienumerable),我将整个转换为列表?我觉得很奇怪……这并不奇怪。List也实现了IEnumerable,Concat是IEnumerable的扩展方法。嗯,也许我不知道List/IList/IEnumerable是如何协同工作的。有好的教程吗?其实很奇怪。使用我的代码(我认为是错误的),我将一个列表与一个IEnumerable合并。然后,使用合并的结果(半列表,半Ienumerable),我将整个转换为列表?我觉得很奇怪……这并不奇怪。List也实现了IEnumerable,Concat是IEnumerable的扩展方法。嗯,也许我不知道List/IList/IEnumerable是如何协同工作的。有好的教程吗?当我回答另一个问题时,我不知道List/IList/IEnumerable是如何协同工作的。有好的教程吗?LINQ基本上在两个接口IEnumerable和iQueerable上运行,而不是类型。因此,实现IEnumerable的所有东西也支持LINQ。如果要查看哪些数据类型实现IEnumerable。如果你愿意的话,我可以为你编一份清单。但这意味着什么操作在两个接口上?它基本上以列表或IEnumerable的形式存储集合中的数据。。这就是我不理解的(比如IList只是List的接口?!?)。这意味着LINQ为IEnumerable接口和每个类(比如List、Queue等)以及实现该接口的其他接口(比如IList)提供了扩展方法。正如我在另一个回答中回答的,我不知道List/IList/IEnumerable是如何协同工作的。有什么好消息吗