我想获取一些数据并将其转换为对象列表。我要从此列表中选择非null且具有特定类型的项目。之后,我想将这些对象变量转换为正确的类型,并将此列表作为数组返回。
ContactEndpoint[] points = (GetContactInformation(contact, ContactInformationType.ContactEndpoints) as List<object>)
.Select(item => item)
.Where(item => item != null && item is ContactEndpoint)
.ConvertAll(item => item as ContactEndpoint)
.ToArray();
使用此代码会在ConvertAll
处引发错误
“ IEnumerable”不包含“ ConvertAll”的定义 并且没有扩展方法'ConvertAll'接受第一个参数 可以找到“ IEnumerable”类型(您是否缺少 指令还是程序集引用?)
我的语法似乎是错误的,我只想做
我该如何解决?
答案 0 :(得分:6)
您可以使用ContactEndpoint[] points = (GetContactInformation(contact, ContactInformationType.ContactEndpoints) as List<object>)
.Where(item => item is ContactEndpoint)
.Cast<ContactEndpoint>()
.ToArray();
或-因为要过滤-Enumerable.Cast
:
所以不是
Enumerable.OfType
此(由于.Where(item => item != null && item is ContactEndpoint)
.ConvertAll(item => item as ContactEndpoint)
的值永远不会与null
隐式滤除的任何类型的匹配):
OfType
.OfType<ContactEndpoint>()
是ConvertAll
或Arrray
答案 1 :(得分:3)
尝试一下:
#!/usr/bin/perl
use warnings;
use strict;
{ package MyLib;
my %hash = (
Addr => {
aa => 0x11223344,
bb => 0x55667788,
cc => 0xaabbccdd,
},
);
sub get_hash { %hash }
}
my %hash = MyLib::get_hash();
print "========================\n";
print "1: $hash{Addr}{'aa'}\n";
print "2: $hash{Addr}{'bb'}\n";
print "3: $hash{Addr}{'cc'}\n";
答案 2 :(得分:2)
ContactEndpoint[] points = GetContactInformation(contact,
ContactInformationType.ContactEndpoints)
.Where(item => item != null)
.OfType<ContactEndpoint>()
.ToArray();
您不需要as List<object>
或.Select(item => item)