C # Как реализовать метод Equal () в массиве цикла for? - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть метод Equal (), чтобы увидеть, был ли уже введен OrderNumber или нет.Я не уверен, как вызвать его во время цикла for.

Это мой метод Equal

public override bool Equals(object e)
    {
        bool equal;
        Order temp = (Order)e;
        if(OrderNumber == temp.OrderNumber)
            equal = true;
        else
            equal = false;
        return equal;
    }

И это входная часть main ()

public class week_6
{
public static void Main(string[] args)
{
    ShippedOrder[] InputOrder = new ShippedOrder[5];
    int x;
    for(x= 0; x < InputOrder.Length; ++x)
    {
    InputOrder[x] = new ShippedOrder();


    Console.Write("Enter order number:  ");
    InputOrder[x].OrderNumber = Convert.ToInt32(Console.ReadLine());
    Console.Write("Enter customer name:  ");
    InputOrder[x].CustName = Console.ReadLine();
    Console.Write("Enter quantity:  ");
    InputOrder[x].Quantity = Convert.ToInt32(Console.ReadLine());
    } 

Класс SippedOrder является дочерним классом Order.учебный класс.Программа компилируется и работает нормально, не пытаясь что-либо сделать с помощью метода equals.

Я пытаюсь получить его так, чтобы, если бы они поместили один и тот же номер заказа, он говорит: "Извините, номер заказа '###' является дубликатом. Пожалуйста, введите заново"

Любая помощь будеточень цениться

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Вы можете попробовать использовать HashSet<ShippedOrder> вместо массива. И используйте это Add() метод. Если Add() возвращает false, вы можете отобразить ваше сообщение "Извините, номер заказа '###' является дубликатом. Пожалуйста, введите заново"

EDIT:

HashSet<ShippedOrder> InputOrder = new HashSet<ShippedOrder>();

и вы можете добавлять в него предметы, как это.

ShippedOrder order  = new ShippedOrder();
order.OrderNumber = 1;
order.CustName = "Foo";
order.Quantity = 10;

bool result = InputOrder.Add(order);

if (!result)
{
   // add failed; display message
   ...
}
1 голос
/ 24 апреля 2011

Этот запрос linq может работать.

var isDupe = InputOrder.Where(o => o.Equals(InputOrder[x])).Count() > 1;
...