c# - 如何在不使用 LINQ 的情况下修复错误“参数 1:无法从“字符串”转换为“PassTask13_new.Customer”
问题描述
我要做的是让用户删除他们想要的客户帐户。以下是我在主类中设置的“客户帐户”的值,格式为来自客户类的新客户(_custName,_purchase,_status):
Customer[] customers =
{
new Customer("Mary", 20, Status.NonMember),
new Customer("Adam", 30, Status.Member),
new Customer("Natasha", 50, Status.Member)
};
这是我为 main 中调用的 remove 方法键入的代码:
Console.Write("\nEnter the customer's name that you want to remove: ");
string name = Console.ReadLine();
foreach(Customer c in a.CustomerList)
{
if(a.CustomerList.Contains(name)) //error is at here the 'name'
{
a.DeleteCustAccount(c);
}
}
我正在使用 Contain() 通过列表搜索匹配的客户名称并将其删除,因为如果我使用索引,用户需要输入“0”来删除第一个“客户帐户”,这可能会让他们中的一些人感到困惑. 我还是 C# 编程的新手,我不确定如何解决这个问题。任何人都可以帮助提供建议吗?
解决方案
您需要指定它应该寻找匹配的属性。
我试图说明您的问题,这段代码应该会有所帮助。
class Customer
{
public Customer(string custName, decimal purchase, Status status)
{
this.custName = custName;
this.purchase = purchase;
this.status = status;
}
public string custName { get; set; }
public decimal purchase { get; set; }
public Status status { get; set; }
}
enum Status
{
Member, NonMember
}
class Program
{
private static void Main()
{
Customer[] customers = new Customer[]
{
new Customer("Mary", 20, Status.NonMember),
new Customer("Adam", 30, Status.Member),
new Customer("Natasha", 50, Status.Member)
};
string name = "Mary";
foreach (var c in customers)
{
if (c.custName.Contains(name))
{
Console.WriteLine("Do something");
}
}
}
}
推荐阅读
- node.js - 缺少到 POST 的路线
- python - 使用 model_main.py 进行训练对象检测失败并出现 Windows 致命异常:访问冲突
- c++ - 如何获取呼叫行号和文件名
- python - 如何对字典中的值是python中的列表进行排序
- c# - 从 IHttpContextAccessor 获取 RouteValues
- c++ - 陷入无限循环
- amazon-dynamodb - DynamoDB:多次调用具有相同 ClientRequestToken 的 TransactWriteItems 以实现幂等性
- c++ - 具有可修补嵌入式配置的应用程序
- algorithm - 空间分支定界算法
- mysql - 将 ASP.NET MVC5 项目连接到 Godaddy 上的 mysql 数据库