我想从列表中的对象获取属性值并将其放入textbox.text
下面我有一个代码示例:
对象:
public class Incident
{
public int Incident_id { get; set; }
public string Description { get; set; }
public string Caller { get; set; }
}
下面是我在表单类中的代码:
List<Incident> incidentById = new List<Incident>();
incidentById = db.GetIncidentById(ID);
当我的列表填满时,我想将字符串Caller放入文本框中,如下所示:
textBoxCaller.Text = incidentById[1].Caller;
我现在处于困境,所以希望有人可以帮助我。 谢谢!
编辑:
public List<Incident> GetIncidentById(int id)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("IncidentLog")))
{
var output = connection.Query<Incident> ($"select * from Incidents where Incident_id like @id", new { id = "%id%" }).ToList();
return output;
}
}
答案 0 :(得分:0)
我没有在查询中传递正确的值
这成功了!
您想要的是$"select * from Incidents where Incident_id = @id", new { id }
答案 1 :(得分:-2)
您要第一个值去吗?
检查喜欢。
if(incidentById.Count>0)
{
textBoxCaller.Text = incidentById.First().Caller;
}
//或您可以像
一样加入列表中的所有呼叫者if(incidentById.Count>0)
{
textBoxCaller.Text = string.join(",",incidentById.Select(x=>x.Caller));
}
答案 2 :(得分:-2)
您面临的问题是,当列表中没有两个或更多元素时,您试图访问列表中的第二个元素。如果您尝试访问列表中的第一个元素,则可以执行任一操作
textBoxCaller.Text = incidentById[0].Caller;
或
textBoxCaller.Text = incidentById.First().Caller;
如果您确实想要列表的第二个元素,则应检查以确保其长度至少为两个:
if(incidentById.Count >= 2)
{
...
}
最后,如注释中所述,您应该将GetIncidentById
重命名为明确表示它正在返回列表的名称,例如GetIncidentsById
或类似名称。