我有以下LINQ查询来接收索引:
fieldIndexes = this.record.Fields.Where(a => !a.IsCodeField)
.OrderBy(a => a.DatabaseIndex)
.Select(a => a.DatabaseIndex - 1)
.ToArray();
但我想将a.DatabaseIndex
替换为搜索的实际索引。我知道语法.Select((a, index) => new (index, a))...
,但我不确定如何将此a
转换为我的类型,在本例中为Field
。我试过了:
fieldIndexes = this.record.Fields.Select((a, index) => new {index, a})
.Where(a => !a.IsCodeField) // <- Invalid Cast.
.OrderBy(a => a.DatabaseIndex)
.Select(a => a.DatabaseIndex - 1)
.ToArray();
如何在LINQ语句中将a
转换为我的类型?
感谢您的时间。
答案 0 :(得分:5)
在Where
子句中,您正在处理新创建的具有属性a
和index
的匿名对象,您可以使用它们:
.Where(a => !a.a.IsCodeField)
当然,这可以通过更易读的方式来完成:
fieldIndexes = this.record.Fields.Select((a, index) => new {Index = index, Field = a})
.Where(a => !a.Field.IsCodeField)
...
答案 1 :(得分:3)
您正在将序列项投影到具有属性index
和a
的匿名对象。原始项目可通过财产a
访问:
fieldIndexes = this.record.Fields.Select((a, index) => new {index, a})
.Where(x => !x.a.IsCodeField)