我的问题如上所述。例如
IEnumerable<T> items = new T[]{new T("msg")};
items.ToList().Add(new T("msg2"));
但毕竟里面只有一项。我们能不能有一个items.Add(item)方法,比如List<T>?
我的问题如上所述。例如
IEnumerable<T> items = new T[]{new T("msg")};
items.ToList().Add(new T("msg2"));
但毕竟里面只有一项。我们能不能有一个items.Add(item)方法,比如List<T>?
当前回答
实现IEnumerable和IEnumerator(从IEnumerable返回)的实例没有任何允许修改收集的api,接口提供只读api。
实际上改变集合的2种方法:
如果实例恰好是一些写API的集合(例如List),你可以尝试转换为这种类型:
list = enumerableInstance as IList<string>;
从IEnumerable中创建一个列表(例如,通过LINQ扩展方法toList():
var list = enumerableInstance.toList();
其他回答
也许我说得太迟了,但我希望这对将来的任何人都有帮助。
可以使用insert函数在特定索引处添加项。 列表。插入(0项);
当然,你可以(我把你的T-business放在一边):
public IEnumerable<string> tryAdd(IEnumerable<string> items)
{
List<string> list = items.ToList();
string obj = "";
list.Add(obj);
return list.Select(i => i);
}
最简单的方法很简单
IEnumerable<T> items = new T[]{new T("msg")};
List<string> itemsList = new List<string>();
itemsList.AddRange(items.Select(y => y.ToString()));
itemsList.Add("msg2");
然后你可以返回list作为IEnumerable,因为它实现了IEnumerable接口
不,IEnumerable不支持向它添加项目。另一种解决方案是
var myList = new List(items);
myList.Add(otherItem);
要添加第二条消息,您需要-
IEnumerable<T> items = new T[]{new T("msg")};
items = items.Concat(new[] {new T("msg2")})