我用下面的MySQL查詢提取數據庫中的以下數據:如何獲取只有列表的指定項目?
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 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);
}
}
}
模型
頁眉
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; }
}
調試應用程序,我得到一個錯誤的模型,還不如我想...
我想第一頭獲得前4行,第二頭獲得最後3行呃。
我該怎麼辦?
有什麼更好的做法:在得到這個模型,然後用linq處理它,或者得到正確的模型?
感謝
使用的GroupBy上'名單'來實現上述期望的結果 –
代碼中有一個問題它將所有屬性添加到HeaderValue,沒有任何酌情權或基於標頭值的分組 –