System.Array不包含';任何';-C#
使用visualbasic//C# 我试图在存储的数组中搜索与用户输入匹配的内容。 例如,用户已经为USB存储了数据,现在希望将该信息恢复 完整代码如下 我已经在使用IndexOf查找数组索引,但现在我想搜索该索引以查找与用户输入匹配的内容。 这行代码:System.Array不包含';任何';-C#,c#,arrays,search,C#,Arrays,Search,使用visualbasic//C# 我试图在存储的数组中搜索与用户输入匹配的内容。 例如,用户已经为USB存储了数据,现在希望将该信息恢复 完整代码如下 我已经在使用IndexOf查找数组索引,但现在我想搜索该索引以查找与用户输入匹配的内容。 这行代码: if (ProductNameArray.Any(usersearch.Contains)) 他犯了一个错误 System.Array不包含“Any”的定义 但它在其他代码中对我有效 我似乎无法理解这一点,非常感谢您的帮助 using Sys
if (ProductNameArray.Any(usersearch.Contains))
他犯了一个错误
System.Array不包含“Any”的定义
但它在其他代码中对我有效
我似乎无法理解这一点,非常感谢您的帮助
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Linq;
namespace Prac_Test3
{
class Program
{
// Constants
const int SIZE_OF_PRODUCT_CODE = 4;
const float CATEGORY_A_MARKUP = 10.0F;
const float CATEGORY_C_MARKUP = 33.3F;
const float CATEGORY_P_MARKUP = 15.0F;
const int ARRAY_SIZE = 100;
static void DisplayMenu()
{
Console.Clear();
Console.WriteLine("--------------> Menu <------------");
Console.WriteLine("1. Add a product (a)");
Console.WriteLine("2. Find a product (f)");
Console.WriteLine("3. Enter the quantity in stock (q)");
Console.WriteLine("4. Delete a product (d)");
Console.WriteLine("5. Calculate and display values (v)");
Console.WriteLine("6. Exit (x)");
Console.Write("\r\nEnter your selection: ");
}
static void AddProduct( string[] ProductNameArray, string[] ProductCodeArray, float[] WholesalePriceArray, ref int NextAvaliablePosition)
{
string ProductName = "";
string ProductCode = "";
string ProductCategory = "";
float WholesalePricePerItem = 0.0F;
bool ParseResult = false;
bool ErrorFlag = false;
string UserResponse = "";
do
{
ErrorFlag = false;
Console.Write("Product Name : ");
ProductName = Console.ReadLine();
if (ProductName == "")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Product Name must not be left blank.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
} while (ErrorFlag);
do
{
ErrorFlag = false;
Console.Write("Product Code : ");
ProductCode = Console.ReadLine();
if (ProductCode == "")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Product Name must not be left blank.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
else if (ProductCode.Length != SIZE_OF_PRODUCT_CODE)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Product Code must be exactly four characters.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
else
{
ProductCategory = ProductCode.Substring(0, 1);
ProductCategory = ProductCategory.ToUpper();
if (ProductCategory != "A" && ProductCategory != "C" && ProductCategory != "P")
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Product Code must start with A, C or P.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
else if (!(Char.IsDigit(ProductCode[1])) && !(Char.IsDigit(ProductCode[2])) && !(Char.IsDigit(ProductCode[3])))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Product Code must be A, C or P followed by three digits.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
}
} while (ErrorFlag);
do
{
ErrorFlag = false;
Console.Write("Wholesale price per item ($): ");
UserResponse = Console.ReadLine();
ParseResult = float.TryParse(UserResponse, out WholesalePricePerItem);
if (ParseResult == false)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Not a valid number.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
else if (WholesalePricePerItem <= 0)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Wholesale price must be a number greater than 0.");
Console.ForegroundColor = ConsoleColor.Gray;
ErrorFlag = true;
}
} while (ErrorFlag);
}
static void FindProduct(Array ProductNameArray)
{
int search = -1;
string usersearch;
usersearch = Console.ReadLine();
search = Array.IndexOf(ProductNameArray, usersearch);
if (search >=0)
{
if (ProductNameArray.Any(usersearch.Contains))
{
Console.WriteLine(" details blah blah");
}
}
else if (search <0)
{
Console.WriteLine("No record exists.");
}
使用系统;
使用System.Collections.Generic;
使用系统文本;
使用System.Threading.Tasks;
使用System.Linq;
名称空间Prac_Test3
{
班级计划
{
//常数
产品代码的常数int SIZE=4;
常量浮点类别标记=10.0F;
常量浮点类别C_标记=33.3F;
常量浮点类别P_标记=15.0F;
常量int数组_SIZE=100;
静态void显示菜单()
{
Console.Clear();
Console.WriteLine(“------------->菜单您需要使用System.Linq;
才能工作
是LINQ中定义的扩展方法
另外,请注意ProductNameArray
的类型。如果它被定义为Array
(例如,而不是string[]
),编译器无法推断在枚举时它将生成string
在这种情况下,你必须写:
if (ProductNameArray.Cast<string>().Any(usersearch.Contains))
到
或者使用.Cast
方法
我个人更喜欢更改方法的签名,因为传递给它的ProductNameArray
似乎真的是一个字符串[]
Any()
是System.Linq
命名空间中的扩展方法。您必须添加using System.Linq;
,以便使用它
namespace Your.Namespace
{
using System;
using ... // your other usings
using System.Linq;
public sealed class YourClass
{
public void Test()
{
// ...
yourArray.Any()
}
}
}
将以下内容添加到您的代码中
using System.Linq;
你确定要添加
System.Linq
名称空间吗?你的.NET Framework版本是什么?我不明白你这么说是什么意思,请你再解释一下好吗?(我是编程专业的一年级学生)我的代码中有很多代码使用System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;这就是你的意思吗?@Shandep是的,这就是我的意思。@Shandep也许把你所有的代码都包括在问题中是个好主意。这部分在方法,我不认为它的其余部分是相关的。您建议我在我的问题中添加哪些部分?@Shandep我不知道代码,所以我无法知道其中哪些部分是相关的。理想情况下,您应该发布所有代码,以查看,例如,当前范围中没有隐藏System.Arr的自定义数组
类唉
类。我的代码最顶层有这个,还有其他东西。
namespace Your.Namespace
{
using System;
using ... // your other usings
using System.Linq;
public sealed class YourClass
{
public void Test()
{
// ...
yourArray.Any()
}
}
}
using System.Linq;