如何使用Contains(Of T)(T)方法?

时间:2012-03-14 17:29:02

标签: c#

我有一个字节列表变量,我在这里存储字节数组信息:

internal List<Byte> portBuffer = new List<Byte>();

我有另一个字节数组变量:

byte[] ret_bytes = { 0x4F, 0x4B };

如何判断ret_bytes是否在portBuffer中?下面的代码似乎不正确。

portBuffer.Contains(ret_bytes)

另一个问题,如果它在列表中,如何在portBuffer列表中查找ret_bytes的第一个元素的位置?

由于

3 个答案:

答案 0 :(得分:1)

Contains在另一个中找不到一个序列,它在一个序列中找到一个元素 - 我不相信.NET中有什么东西会做你想要的开箱即用。

由您决定是编写一个非常通用的实现还是只是解决您当前的问题 - 前者可能会更多工作,但从长远来看可能会带来红利。< / p>

如果你只需要找到两个字节,我很想迭代:

for (int i = 0; i < list.Count - 1; i++)
{
    if (list[i] == 0x4f && list[i + 1] == 0x4b)
    {
        // Got it
    }
}

答案 1 :(得分:1)

我相信你的评论是正确的,而且实际上已经有人问过了。能否请您确认这是您要问的问题:)

How do I use LINQ Contains(string[]) instead of Contains(string)

答案 2 :(得分:0)

使用LINQ - IEnumerable<T>.Intersect(IEnumerable<T>)获取portBufferret_bytes中显示的字节集。

var portBuffer = new List<Byte> {0x4F, 0x4B, 0x27};
byte[] ret_bytes = { 0x4F, 0x4B, 0x26 };

return portBuffer.Intersect(ret_bytes); // This will return { 0x4F, 0x4B }