C#查找并编辑列表中的单个对象

时间:2014-07-16 13:24:29

标签: c# linq list class

public class kDrinki
{
    public int id {get; set;}
    public string nazwa { get; set; }
    public string skladniki { get; set; }
    public string opis { get; set; }
    public string sciezka { get; set; }

    public kDrinki(int _id, string _nazwa, string _skladniki, string _opis, string _sciezka)
    {
        id = _id;
        nazwa = _nazwa;
        skladniki = _skladniki;
        opis = _opis;
        sciezka = _sciezka;
    }
}

我有那门课。我创建了对象的List lst_pDrinkow并添加了一些表单XML。我不知道如何从列表中只找到单个对象(使用对象id而不是列表id)并编辑他的所有数据(不仅仅是单个参数)。

2 个答案:

答案 0 :(得分:5)

您可以尝试这样的事情:

var obj =  lst_pDrinkow.SingleOrDefault(x=>x.id==Id);

其中Id是您要查找的对象的ID。

如果有一个提供了Id的对象,您将获得它。否则,结果将是null

获得所需的对象后,可以非常轻松地更新数据。

if(obj!=null)
{
    obj.nazwa = "new value";
    // update the values of the other properties with the same way.
}

<强>更新

虽然不是你的情况,但我必须在此注意如果 多个对象与提供的Id,那么你会得到一个例外。我们通常使用SingleOrDefault,当我们确定我们正在寻找的对象是唯一的时候,如果存在的话。

更正式:

  

返回序列的唯一元素,如果是,则返回默认值   序列是空的;如果有更多,此方法会抛出异常   比序列中的一个元素。

here所述。

答案 1 :(得分:0)

List<kDrinki> items = new List<kDrinki>();
        var tmp1 = items.SingleOrDefault(a => a.id == 10);
        tmp1.skladniki = "new value";

        var tmp2 = items.SingleOrDefault(a => a.opis.Contains("some strings"));
        tmp2.skladniki = "new value2";