C#Array.Contains()编译错误

时间:2011-04-29 23:19:30

标签: c# .net linq

我正在尝试在C#中使用Array.Contains()方法,并且由于某种原因它无法编译,尽管我相信我正在使用C#4.0,而C#应该在3.0及更高版本中支持它。

if (! args.Contains ("-m"))
    Console.WriteLine ("You must provide a message for this commit.");

我收到了这个错误:

  

Main.cs(42,15):错误CS1061:'System.Array'不包含'Contains'的定义,并且没有扩展方法'Contains'接受'System.Array'类型的第一个参数可以找到(您是否缺少using指令或程序集引用?)

我正在从命令行编译,没有选项:“csc Main.exe”。

7 个答案:

答案 0 :(得分:75)

您需要在程序开头添加using System.Linq;

答案 1 :(得分:12)

你忘记了using System.Linq吗?

顺便说一句,如果你不能使用LINQ,还有许多其他选项,例如Array.Exists

答案 2 :(得分:9)

如果你不想使用linq试试

((IList<string>)args).Contains("-m")

答案 3 :(得分:3)

我有同样的问题而且我有

using System.Linq

这是因为我试图将字符串与int 进行比较,但不知此怎么说

  

&#39;的System.Array&#39;不包含&#39;包含&#39;的定义

答案 4 :(得分:2)

使用System.Linq 这让我每次都

答案 5 :(得分:0)

确保使用正确版本的CSC(csc /?) - 您需要2010版本才能编译4.0。 您还可能需要添加其他库(/ r选项)以便编译成功。

答案 6 :(得分:0)

可以找到包含System.Linq的答案,但是还有其他原因导致此问题。如果.Contains()的参数类型与数组的类型不匹配,则会出现此错误。

public class Product
{
    public long ProductID {get;set;}
}

public IEnumerable<Product> GetProductsByID(int[] prodIDs)
{
    using (var context = new MyDatabaseContext())
    {
        return context.Products.Where(product => prodIDs.Contains(product.ProductID)); // ['System.Array' does not contain a definition for 'Contains'] error because product.ProductID is long and prodIDs is an array of ints.
    }
}