我的类库中有一个列表集合,它使用sql datareader返回系列详细信息列表
public class Dataops
{
public List<Details> getFamilyMembers(int id)
{
some of the database code..
List<Details> fammemdetails = new List<Details>();
Details fammember;
while (reader.Read())
{
fammemdetails = new Details((
reader.GetString(reader.GetOrdinal("PHOTO")));
fammemdetails.add(fammember);
}
return fammemdetails;
}
}
所以我将dll引用到我的项目中,并希望将图像绑定到我的一个datareader值。
MyProject的
DataOps ops = new DataOps();
myimage.ImageUrl = ??? (how do i access the list collections return image value here?
我能够将数据源绑定到整个方法,如此
dropdownlistFamily.DataSource = mdb.GetFamilyMembers(id);
但是无法弄清楚如何从那里抓取一个值
答案 0 :(得分:3)
根据您的要求,您可以使用First
/ FirstOrDefault
,Single
/ SingleOrDefault
。这将为您提供List中的单个项目,您可以访问其ImageUrl
属性。
var item = mdb.GetFamilyMembers(id).FirstOrDefault();
if(item != null)
myimage.ImageUrl = item.ImageUrlProperty;
如果您想根据条件从列表中获取某些特定对象,则可以执行以下操作:
var item = mdb.GetFamilyMembers(id).FirstOrDefault(r=> r.ID == someID);
您可能会看到:LINQ Single vs SingleOrDefault vs First vs FirstOrDefault
答案 1 :(得分:2)
使用index
访问集合中的特定记录。您需要确保元素存在于索引器中给出的索引处,否则您将获得异常。它是基于零的索引,因此第一个元素将位于零索引。
var familyMembers = mdb.GetFamilyMembers(id);
if(familyMembers.Count > 0)
myimage.ImageUrl = familyMembers[0].ImageURLProperty;
答案 2 :(得分:2)
您可以使用FirstOrDefault
或SingleOrDefault
。或者指定谓词并使用Where
。
var firstValue = ops.getFamilyMembers(1).FirstOrDefault();