我想转换IEnumerable<Contact>为List<Contact>.我怎样才能做到这一点?
我知道可以将一个项目列表从一种类型转换为另一种类型(假设您的对象有一个公共静态显式运算符方法来执行转换),一次一个:
List<Y> ListOfY = new List<Y>();
foreach(X x in ListOfX)
ListOfY.Add((Y)x);
Run Code Online (Sandbox Code Playgroud)
但是不可能一次投出整个列表吗?例如,
ListOfY = (List<Y>)ListOfX;
Run Code Online (Sandbox Code Playgroud) 我有两个IEnumerable<T>(相同T)的实例.我想要一个新的实例IEnumerable<T>是两者的串联.
在.Net中是否有内置方法可以做到这一点,还是我必须自己编写?
我有一个返回的方法IEnumerable<KeyValuePair<string, ArrayList>>,但有些调用者要求方法的结果是字典.如何将其IEnumerable<KeyValuePair<string, ArrayList>>转换为Dictionary<string, ArrayList>可以使用的TryGetValue?
方法:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
Run Code Online (Sandbox Code Playgroud)
呼叫者:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
Run Code Online (Sandbox Code Playgroud) 我有以下功能来获取卡的验证错误.我的问题涉及处理GetErrors.两种方法都具有相同的返回类型IEnumerable<ErrorInfo>.
private static IEnumerable<ErrorInfo> GetErrors(Card card)
{
var errors = GetMoreErrors(card);
foreach (var e in errors)
yield return e;
// further yield returns for more validation errors
}
Run Code Online (Sandbox Code Playgroud)
是否可以返回所有错误GetMoreErrors而无需通过它们进行枚举?
想一想这可能是一个愚蠢的问题,但我想确保我不会出错.
我对这种差异感到困惑.作为.Net的新手,我知道我可以IEnumerables使用Linq扩展进行查询.那么这是什么IQueryable以及它有何不同?
另请参见IQueryable [T]和IEnumerable [T]之间的区别是什么?与这个问题重叠.
当我在我的域中有实体列表的实体时,它们应该作为IList或IEnumerables公开吗?例如Order有一堆OrderLines.
我爱string.IsNullOrEmpty方法.我很想拥有能够为IEnumerable提供相同功能的东西.有这样的吗?也许一些收集助手班?我问的原因是,在if语句中,如果模式是代码,代码看起来很混乱(mylist != null && mylist.Any()).拥有它会更加清洁Foo.IsAny(myList).
这篇文章没有给出答案:IEnumerable是空的?.
我以前从来没有偶然发现过这个问题,但我现在已经感到惊讶,因为我找不到一个非常简单的方法来转换IEnumerable<char>为a string.
我能想到的最好的方法是string str = new string(myEnumerable.ToArray());,但是,对我来说,似乎这会创造一个新的char[],然后string从中创造一个新的,这看起来很昂贵.
我认为这将是.NET框架内置的常用功能.有更简单的方法吗?
对于那些感兴趣的人,我想使用它的原因是使用LINQ来过滤字符串:
string allowedString = new string(inputString.Where(c => allowedChars.Contains(c)).ToArray());
Run Code Online (Sandbox Code Playgroud) 我写了这个:
public static class EnumerableExtensions
{
public static int IndexOf<T>(this IEnumerable<T> obj, T value)
{
return obj
.Select((a, i) => (a.Equals(value)) ? i : -1)
.Max();
}
public static int IndexOf<T>(this IEnumerable<T> obj, T value
, IEqualityComparer<T> comparer)
{
return obj
.Select((a, i) => (comparer.Equals(a, value)) ? i : -1)
.Max();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道它是否已经存在,是吗?
ienumerable ×10
c# ×8
.net ×4
collections ×3
linq ×3
list ×2
.net-3.0 ×1
casting ×1
dictionary ×1
idictionary ×1
ilist ×1
indexof ×1
iqueryable ×1
string ×1
yield ×1
yield-return ×1