Linq获取索引
本文关键字:索引 获取 Linq | 更新日期: 2023-09-27 18:06:44
在我的应用程序中,我使用下面的代码来获取所需内容的索引(行号)(我在基于跳过/获取索引和搜索文本的情况下多次使用此代码)。我使用Skip和Take取决于我是否必须在某些行或某些行之后搜索数据。在这两种情况下,我使用First()而不是FirstOrDefault()作为我正在搜索的文本将始终存在。
Int myIndex = pSegments.Skip(nextIndex).Where(seg => (seg.Elements.ElementAt(0).Equals("MyTEXT")).Select(seg => seg.LineNumber).First();
Int myIndex = prodSegments.Take(testIndex).Where(seg => (seg.SegID.Equals("SOMETEXT") && seg.Elements.ElementAt(1).Equals(“SampleText”))).Select(seg => seg.LineNumber).First();
其中pSegments为-
IEnumerable<PSegment> pSegments;
class PSegment
{
public string SegID { get; set; }
public string[] Elements { get; set; }
public int LineNumber { get; set; }
}
到现在还没有给我任何问题。但是对于这种手术,这是正确的方法吗?有没有更好的办法?
谢谢
清理代码:
int myIndex = pSegments.Skip(nextIndex)
.First(seg => seg.Elements[0] == "MyTEXT")
.LineNumber;
int myIndex = prodSegments.Take(testIndex)
.First(seg => seg.SegID == "SOMETEXT" && seg.Elements[1] == "SampleText")
.LineNumber;
很难回答你的主要问题,因为你没有提供很多背景,我发现你的措辞令人困惑。但是一般来说,像这样用Skip
和Take
会很奇怪。如果这是一种常见的操作,您可能应该将这些行存储在某种支持快速随机访问的数据结构中。