none
Linq -String in int umwandeln diverse Fehlermeldungen RRS feed

  • Frage

  • Hi NG,

    in folgendem Code:

     

    //Datenfelddeklaration
     [Column(IsPrimaryKey = true)]
            public int AdressID {get; set;}


       1.     //sucht Adresse für Änderungsformular
            public static List<EntitySet> Suchen(string adrid)
            {

                db = new DataContext(@"Data Source=.\sqlexpress;
                                                    Initial Catalog=Adressverwaltung;
                                                    Integrated Security=True");

                Table<EntitySet> Adresse = db.GetTable<EntitySet>();

                return (from a in Adresse
                        where a.AdressID = adrid
                        select a).ToList<EntitySet>();


    2.    foreach (DataGridViewRow selRows in dataGridView1.SelectedRows)
                {
                    EingabeForm frm = new EingabeForm();
                    //Ausgabe (Zuweisung zur Weitergabe)
                    myAdressId = selRows.Cells["AdressID"].Value.ToString();
                    frm.Show();
                }

     

    3.     BindingSource bindingSource = new BindingSource();
                bindingSource.DataSource = Datentest.Suchen(Form1.myAdressId);

    habe ich folgende Probleme:

    zu 1.  Eine implizite Konvertierung vom Typ "string" in "int" ist nicht möglich. 

    zu 2.  Eine implizite Konvertierung vom Typ "string" in "int" ist nicht möglich. 

    zu 3. 1-Argument: kann nicht von "int" in "string" konvertiert werden. 

             Die beste Übereinstimmung für die überladene FormLinqToSqlTest.Datentest.Suchen(string)-Methode hat einige ungültige Argumente. 

     

    Ich denke, das daß Problem darin liegt, das daß Datenfeld, das von 2. übergeben wird, in der Datenbank vom Typ Long Integer (AutoWert) ist.

    Wie bekomme ich die Sache in den Griff?

     

    Gruß

    Andy


    • Bearbeitet AndyAh Donnerstag, 19. Januar 2012 10:54
    Donnerstag, 19. Januar 2012 10:52

Antworten

  • Poste mal den genauen Code, der "Form1.myAdressId" deklariert.

    Ansonsten erwartet deine Funktion "Suchen(string adrid)" einen string-Wert, versucht aber dann, diesen mit einem int-Wert zu vergleichen

      where a.AdressID = adrid

    du solltest also sinnvollerweise einfach den Parametertyp ändern, also

      public static List<EntitySet> Suchen(int adrid) { ... }

    dann klappt der Vergleich in der Funktion auch.

    So du an anderer Stelle wirklich die id als string-Wert hast, dann musst du erst ein Umwandlung durchführen, etwa per

      int.Parse(stringVariable)


    MVP Data Platform Development My blog
    Donnerstag, 19. Januar 2012 11:05

Alle Antworten

  • Poste mal den genauen Code, der "Form1.myAdressId" deklariert.

    Ansonsten erwartet deine Funktion "Suchen(string adrid)" einen string-Wert, versucht aber dann, diesen mit einem int-Wert zu vergleichen

      where a.AdressID = adrid

    du solltest also sinnvollerweise einfach den Parametertyp ändern, also

      public static List<EntitySet> Suchen(int adrid) { ... }

    dann klappt der Vergleich in der Funktion auch.

    So du an anderer Stelle wirklich die id als string-Wert hast, dann musst du erst ein Umwandlung durchführen, etwa per

      int.Parse(stringVariable)


    MVP Data Platform Development My blog
    Donnerstag, 19. Januar 2012 11:05
  • Hallo Andy,

    zu 1:

    public static List<EntitySet> Suchen(int adrid)
    {
       // ...
       return (from a in Adresse
                  where a.AdressID == adrid
                  select a).ToList<EntitySet>();
    }
    

    zu 2:

    Was ist denn selRows.Cells["AdressID"].ValueType bei dir? - Wenn myAdressId vom Typ int ist, wieso konvertierst Du Object zu String und nicht zu Integer?

    Welchen Sinn hat es, einen Wert an eine Property zuzuweisen, die ein autogeneriertes Datenbankfeld modelliert?

    zu 3:
    siehe 1.

    Wieso heißt deine Datenklasse EntitySet?

    Gruß
    Marcel

    Donnerstag, 19. Januar 2012 11:19
    Moderator
  • Hi Martin,

     

    danke für den Tip mit dem Parsen!!

    Jetzt funktioniert's :) !!

    Gruß

    Andy

    Donnerstag, 19. Januar 2012 13:30