我想使用Linq to XML输出一个排序列表,每个元素应该包含一个值及其在该列表上的索引。
换句话说,我想做这样的事情(xml的东西被镶边了):
var Sample = new[] { "4", "3", "2", "1" }.AsQueryable();
var r = (from o in Sample orderby o select new {obj=o, idx=?});
我不确定如何计算idx。
这可能还是我应该使用foreach循环?
答案 0 :(得分:2)
您可以使用foreach循环,或者您可以使用此签名的Select重载:
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, int, TResult> selector
)
此版本的Select会将枚举中项目的索引传递给您。
你会这样称呼:
var Sample = new[] { "4", "3", "2", "1" };
var r = Sample.OrderBy(t => t).Select((t, i) => new {obj = t, idx = i});
答案 1 :(得分:1)
我不相信使用查询语法很容易实现。但是,如果使用lambda样式查询方法,则可以使用select的重载,它将索引作为第二个参数传递。
var r = Sample.OrderBy(x => x).Select((o,i) => new { obj=o, idx=i});