Member 13554627 Ответов: 1

Как я могу использовать contains и indexof?


если выпил.содержит doenst, кажется, работает. может кто-нибудь помочь мне с этим?

Что я уже пробовал:

public partial class Form1 : Form
    {

        administration admin = new administration();
        //reserveer Reserveer = new reserveer();
        public Form1()
        {
            InitializeComponent();

            load();
        }


        public void load()
        {
            List<groep> Groepnaam = admin.groepsnaam();
            List<persoon> personen = admin.spelers();
            
            foreach (Groep naam in Groepnaam)
            {
                listBox3.Items.Add(naam.Groepsnaam );

            }
            foreach (persoon Persoon in personen)
            {
                listBox1.Items.Add(Persoon);
            }
        }
        

        
        private void button1_Click(object sender, EventArgs e)
        {
            int aantalstrikes = Convert.ToInt32(numstrikes.Value);
            int aantalspares = Convert.ToInt32(numspares.Value);
            int aantalpunten = Convert.ToInt32(tbpunten.Text);
            int aantalbier = Convert.ToInt32(aantbier.Text);
            int prijs = 2;
            

            admin.voegtoebier(aantalbier, prijs);
            
            admin.voegtoescore(aantalpunten, aantalstrikes, aantalspares);
            List<score> Punten = admin.punten();
            
            foreach (score punt in Punten)
            {
                listBox2.Items.Add(punt);
                


            }
            List<bier> consumptie = admin.Bier();
            
            foreach(bier drank in consumptie)
            {
                listBox4.Items.Add(drank);
                


            }
              if (drank.contains)
            {


             }




        }

David_Wimbley

Ваш код не так уж и ясен, как вы это делаете .contains (должен быть .Contains) на переменную, которая используется в цикле foreach...но вы получаете доступ к ней вне вашего цикла foreach.

Как бы то ни было, я думаю, что вы, возможно, захотите взглянуть на использование .Any(.

1 Ответов

Рейтинг:
11

OriginalGriff

Во первых, drank находится вне области действия к тому времени, когда ваш код доберется до конца foreach петля - так что независимо от того, что это было, вы не можете использовать его - он больше не существует.

Во-вторых, Contains и IndexOf требуют класса, реализующего IEnumerable<T> Так что если только bier класс на самом деле является производным от списка или аналогичного, или вы сами добавили к нему метод Contains, вы не можете его вызвать. И судя по коду выше этого, я не думаю, что это так.
Это то, что вы пытаетесь сделать, я думаю:

public class Beer
    {
    public string Name { get; set; }
    public int Abv { get; set; }
    }
private void MyButton_Click(object sender, EventArgs e)
    {
    List<Beer> beers = new List<Beer>();
    Beer a = new Beer() { Name = "Shimptons Old Cleanser", Abv = 17 };
    beers.Add(a);
    Beer b = new Beer() { Name = "Horse Urine", Abv = 3 };
    beers.Add(b);
    Beer c = new Beer() { Name = "Heinekon", Abv = 1 };
    beers.Add(c);
    if (beers.Contains(b))
        {
        Console.WriteLine("Yes, {0} is a beer. Technically.", b.Name);
        }
    Console.WriteLine("{0} is at index {1}", c.Name, beers.IndexOf(c));
...


Цитата:</div>Ну, в общем, я хочу проверить значение (int), которое поступает из базы данных sql. но где я могу использовать метод contain, чтобы проверить, есть ли в моей базе данных число, например 100.

В принципе, нет.

Если вы хотите знать, существует ли что-то в БД, спросите БД!
SELECT COUNT(*) FROM MyTable WHERE MyColumn = 100
Используйте это с ExecuteScalar, и он вернет количество элементов с этим значением.

Если вы встроили их в коллекцию bier объекты, а затем использовать LINQ, которая существует метод вместо этого:
if (beers.Exists(x => x.Abv = 3))
    {
    Console.WriteLine("Yes, {0} is a beer. Technically.", b.Name);
    }

Метод Contains ищет только точное соответствие ссылки на объект ссылке на объект в коллекции, он не может смотреть на внутренние объекты объекта.


Member 13554627

ну, в общем, я хочу проверить значение (int), которое поступает из базы данных sql. но где я могу использовать метод contain, чтобы проверить, есть ли в моей базе данных число, например 100.


public void voegtoebier(int aantal, int prijs)
{
данные.Открыть();
string query = "вставить в Bier (Aantal_consumpties,Prijs) значения(@Aantal_consumpties,@Prijs)";
SqlCommand cmd = новая команда SqlCommand(запрос, данные);
cmd.параметры.AddWithValue("@Aantal_consumpties", aantal);
cmd.параметры.AddWithValue ("@Prijs", prijs);

УМК.Метод executenonquery();
данные.Закрывать();
публичный список<bier> Bier()
{
SqlConnection data = new SqlConnection(Connectionstring);
данные.Открыть();
строка запроса = "выбрать сумма(Aantal_consumpties*цена) как Rekeninggroep от пива";

SqlCommand cmd = новая команда SqlCommand(запрос, данные);
использование (SqlDataReader reader = cmd.Метода executereader())
{
в то время как (читатель.читать())
{

bier biertje = новый bier();

// Lees de gegevens van de student in.
biertje.voegtoebier(читатель.GetInt32(0));


// En voeg deze toe aan de lokale lijst.
биртьес.Добавить(biertje);

}
}
данные.Закрывать();
возвращение биртьеса;