Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda“;在“之间选择”;_C#_Asp.net - Fatal编程技术网

C# Lambda“;在“之间选择”;

C# Lambda“;在“之间选择”;,c#,asp.net,C#,Asp.net,我有一个通用字符串列表,如下所示: List<string> list = new List<string>(); list.Add("foo"); list.Add("1"); list.Add("2"); list.Add("bar"); list.Add("foo"); list.Add("1"); list.Add("2"); list.Add("3"); list.Add("bar"); List List=新列表(); 列表。添加(“foo”); 列表。添

我有一个通用字符串列表,如下所示:

List<string> list = new List<string>();

list.Add("foo");
list.Add("1");
list.Add("2");
list.Add("bar");
list.Add("foo");
list.Add("1");
list.Add("2");
list.Add("3");
list.Add("bar");
List List=新列表();
列表。添加(“foo”);
列表。添加(“1”);
列表。添加(“2”);
列表。添加(“酒吧”);
列表。添加(“foo”);
列表。添加(“1”);
列表。添加(“2”);
列表。添加(“3”);
列表。添加(“酒吧”);
我想知道的是,是否有任何方法可以选择两个值之间的值。在本例中,我在“1”、“2”和“3”之后。换句话说,我想选择最后一个“foo”和“bar”之间的所有内容。或者如果更容易的话,在“foo”之后选择N行

我最好的猜测是使用
TakeWhile
方法,但我需要您的帮助。

对于LINQ来说,使用最后一种方法通常有点棘手。对于这一部分,我会选择
LastIndexOf
,因为您有一个
列表,毕竟:

int end = list.LastIndexOf("foo");

list.Skip(end + 1).TakeWhile(x => x != "bar")

我会用这样的词(如果在“foo”之后不总是出现“bar”):

或者这个:

var start = list.FindLastIndex(i => i == "foo");
var end = list.FindLastIndex(i => i == "bar");

if(start != -1 && end != -1){
    var result = list.GetRange(start + 1, end - start - 1);
}

谢谢,这里有没有办法使用“StartsWith”方法?所以我得到了所有以“foo”开头的行?@Johan:你应该使用
FindLastIndex
而不是
LastIndexOf
,正如Eugene的回答所示:
int end=list.FindLastIndex(x=>x.StartsWith(“foo”)
var start = list.FindLastIndex(i => i == "foo");
var end = list.FindLastIndex(i => i == "bar");

if(start != -1 && end != -1){
    var result = list.GetRange(start + 1, end - start - 1);
}