我有一个IEnumerable<byte>
我想转换为的new object { byte property1, byte property2, ....}
,将所有这些字节值连接到一个对象中。
我如何使用 LINQ 做到这一点?
我不知道您为什么要实现这一目标,但我认为有一种方法,使用ExpandoObject
from System.Dynamics
。
可以使用Aggregate
LINQ 中的方法来完成:
return source.Select((x, i) => new {name = string.Format("{0}{1}", propertyPrefix, i), value = x})
.Aggregate((new ExpandoObject()) as IDictionary<string, Object>,
(e, i) =>
{
e[i.name] = i.value;
return e;
}, e => e as ExpandoObject);
您应该将其隐藏在另一种扩展方法下,例如ToExpandoObject
:
public static ExpandoObject ToExpandoObject<TSource>(this IEnumerable<TSource> source, string propertyPrefix)
{
return source.Select((x, i) => new {name = string.Format("{0}{1}", propertyPrefix, i), value = x})
.Aggregate((new ExpandoObject()) as IDictionary<string, Object>,
(e, i) =>
{
e[i.name] = i.value;
return e;
}, e => e as ExpandoObject);
}
用法:
var source = new List<int>() {123, 234, 345, 456, 567, 678};
var t = source.ToExpandoObject("Property");