在linq语句中接收当前比较的索引

时间:2014-08-27 14:23:08

标签: linq lambda

til.First(t => ViewModel.StringValue.CompareTo(t.StringValue) <= 0).StringValue;

是否有可能在比较时得到t的索引值,以便可以在另一个数组中使用它来访问要在比较中使用的数据?

2 个答案:

答案 0 :(得分:1)

不是直接使用First而是使用Select / First,是(您将在该示例中获得匿名对象)

var res = til.Select((x, index) => new {
            x.StringValue,
            index
          })
             .First(t => ViewModel.StringValue.CompareTo(t.StringValue)<= 0);

因此索引将是

res.index

和strValue将是

res.StrValue

这会为您提供一个匿名对象,其中包含StringValueindex属性

答案 1 :(得分:0)

你可以做的一件事是添加一个中间人.Select(),它带来一个包含当前t对象及其索引的匿名类型对象:

til
  .Select((t, index) => new {t, index})
    // x.index is available on the next line
  .First(x => ViewModel.StringValue.CompareTo(x.t.StringValue) <= 0)
  .t.StringValue;