0

我有一个IEnumerable<byte>我想转换为的new object { byte property1, byte property2, ....},将所有这些字节值连接到一个对象中。

我如何使用 LINQ 做到这一点?

4

1 回答 1

0

我不知道您为什么要实现这一目标,但我认为有一种方法,使用ExpandoObjectfrom System.Dynamics

可以使用AggregateLINQ 中的方法来完成:

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");
于 2013-04-24T14:30:59.943 回答