我有一个我获得的列表,它为我提供了 phraseSources 的所有元素,其中 MSoftMeaning 属性为 null 或为空:
public class PhraseSource
{
[PrimaryKey]
public string Id { get; set; }
public int PhraseNum { get; set; }
public string MSoftMeaning { get; set;
}
public static List<PhraseSource> phraseSources;
var pList = phraseSources.Where(x => string.IsNullOrEmpty(x.MSoftMeaning));
我想做的不是获取行,而是获取列表或所有行号的数组(称为索引),其中列表元素的 MSoftMeaning 为 null。
因此,例如,如果第一行和第三行的 MSoftMeaning 为 null,那么我希望得到一个类似于 (1,3) 或 [1,3] 的列表。
最佳答案
可以先抓取索引,然后过滤再选择原始索引:
var pList = phraseSources
.Select((item, i) => new {index = i, item = item}) // capture
.Where(x => string.IsNullOrEmpty(x.item.MSoftMeaning)) // filter
.Select(p => p.index) // select only indexes
.ToList(); // or use ToArray()
您需要先在 Where
之前使用 Select
捕获索引,否则在最后一个 Select
中您将获得新列表。
关于c# - 如何在列表中列出具有不为空的字段的元素编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144481/