Benutzer mit den meisten Antworten
Linq -String in int umwandeln diverse Fehlermeldungen

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
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- Als Antwort vorgeschlagen Marcel RomaModerator Donnerstag, 19. Januar 2012 14:07
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. Februar 2012 08:16
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- Als Antwort vorgeschlagen Marcel RomaModerator Donnerstag, 19. Januar 2012 14:07
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 15. Februar 2012 08:16
-
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