ich extrahieren Sie die folgenden Daten aus der Datenbank mit der folgenden MySQL Query:Wie bekomme ich nur einen bestimmten Listeneintrag?
SELECT vs.value, vs.is_header, vsa.is_required, vsa.name, vsar.value
FROM vista_struttura AS vs
LEFT JOIN vista_struttura_attributi AS vsa
ON vs.id_vista_struttura = vsa.id_vista_struttura
LEFT JOIN vista_struttura_attributi_raccordi AS vsar
ON vsa.input_type = vsar.input_type
ORDER BY vs.sort;
Daten extrahiert werden
ich diese Daten in einem Modell von mir selbst mit dem folgenden Code gebaut speichern habe :
var model = new List<Header>();
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
var sql = "SELECT vs.value, vs.is_header, vsa.is_required, vsa.name, vsar.value " +
"FROM vista_struttura AS vs " +
"LEFT JOIN vista_struttura_attributi AS vsa " +
"ON vs.id_vista_struttura = vsa.id_vista_struttura " +
"LEFT JOIN vista_struttura_attributi_raccordi AS vsar " +
"ON vsa.input_type = vsar.input_type " +
"ORDER BY vs.sort";
var cmd = new MySqlCommand(sql, connection);
var rdr = cmd.ExecuteReader();
var rows = new List<ViewProperties>();
while (rdr.Read())
{
var value = rdr[0].ToString();
var isHeader = Convert.ToBoolean(rdr[1]);
var isRequired = (rdr[2] == DBNull.Value) ? (bool?) null : Convert.ToBoolean(rdr[2]);
var name = rdr[3].ToString();
var inputType = rdr[4].ToString();
var properties = new ViewProperties()
{
Value = value,
IsHeader = isHeader,
IsRequired = isRequired,
Name = name,
InputType = inputType
};
rows.Add(properties);
var header = new Header()
{
HeaderValue = (properties.IsHeader == true) ? properties.Value : null,
Rows = rows
};
if (header.HeaderValue != null)
{
model.Add(header);
}
}
}
Modelle
Kopf
public class Header
{
public string HeaderValue { get; set; }
public IList<ViewProperties> Rows { get; set; }
}
ViewProperties
public class ViewProperties
{
public string Value { get; set; }
public bool IsHeader { get; set; }
public bool? IsRequired { get; set; }
public string Name { get; set; }
public string InputType { get; set; }
}
Debuggen der Anwendung ich ein falsches Modell bekommen, nicht wie ich will ...
Ich möchte Holen Sie sich die ersten 4 Zeilen für den ersten Header und die anderen 3 Zeilen für den zweiten Header er.
Wie kann ich tun?
Was ist besser zu tun: Bevor Sie dieses Modell und dann mit linq umgehen, oder erhalten Sie bereits das richtige Modell?
Dank
Verwenden GroupBy auf 'List' das gewünschte Ergebnis –
-Code oben zu erreichen, ein Problem aufgetreten ist Das Hinzufügen aller Eigenschaften zum HeaderValue, gibt es keine Diskretion oder Gruppierung basierend auf Header-Wert –