获取列表中对象的属性值

时间:2018-06-21 13:21:22

标签: c#

我想从列表中的对象获取属性值并将其放入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;
            }
        }

3 个答案:

答案 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或类似名称。