我以前使用以下代碼來查找字符串中第一次出現的文本。使用Linq搜索兩個項目的組合
int index = myString.IndexOf(「AB」);
現在我將更改軟件,以便它將查找列表中第一次出現的兩個字節。 Linq有可能嗎?
編輯
該程序的目的是通過串行端口進行通信。此前該程序使用字符串管理數據。但處理字符串中的二進制數據很奇怪。所以我改變了程序,以便在List<byte>
中處理數據。
我以前使用以下代碼來查找字符串中第一次出現的文本。使用Linq搜索兩個項目的組合
int index = myString.IndexOf(「AB」);
現在我將更改軟件,以便它將查找列表中第一次出現的兩個字節。 Linq有可能嗎?
編輯
該程序的目的是通過串行端口進行通信。此前該程序使用字符串管理數據。但處理字符串中的二進制數據很奇怪。所以我改變了程序,以便在List<byte>
中處理數據。
純LINQ:
var arr = new byte[] { 1, 2, 3, 4, 5, 6 };
var res = arr.Zip(arr.Skip(1), (a, b) => new { a, b }).Select((x, i) => new { x, i })
.FirstOrDefault(v => v.x.a == 3 && v.x.b == 4);
if (res != null)
{
Console.WriteLine(res.i);
}
給你怎麼說你想在一個列表來搜索字節,我假設你有List<byte>
對象,命名爲list
,和byte[]
,命名爲bytes
。
List<byte> list = new List<byte>();
byte[] bytes = { 0x01, 0x02 };
list.Where((b, i) => (list.Count() >= i + 1 ? false : (b == bytes[0] && list[i + 1] == bytes[1]))).First();
三元表達式,可以確保你沒有一個ArrayOutOfBoundsException
可能,但你需要給我們提供了很多的信息。目前我們沒有太多的機會幫助你。請閱讀http://tinyurl.com/so-hints,然後更新您的問題。 –