在后面的代码中访问我的类返回列表集合

时间:2013-10-03 17:44:50

标签: c# asp.net class-library

我的类库中有一个列表集合,它使用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);

但是无法弄清楚如何从那里抓取一个值

3 个答案:

答案 0 :(得分:3)

根据您的要求,您可以使用First / FirstOrDefaultSingle / 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)

您可以使用FirstOrDefaultSingleOrDefault。或者指定谓词并使用Where

var firstValue = ops.getFamilyMembers(1).FirstOrDefault();