从列表对象中查找特定项目

时间:2018-08-03 04:14:15

标签: c# list object find

我有一个对象列表:

 List<Object> allUserDatas = new List<Object>();

我已经阅读了数据表单数据库并将记录(行)存储在此allUserDatas列表中。

allUserDatas = getUserData(userDetails.Ownerid, userDetails.LoggedIn);

当我试图从该列表中获取数据时,我无法做到这一点。

enter image description here

如何从此列表中获取特定数据?

对于ex:仅限AssignedToGroup和CallerId

我使用了Entity Framework,因为我已经读取了我的数据并将其分配给List<object>

public List<object> getUserData(string Id,DateTime loggedIn) 
{ 
    List<object> userDatas = new List<object>(); 

    using (UsersEntities entity = new UsersEntities()) 
    { 
         tblUserData data = new tblUserData(); 
         userDatas.Add(entity.tblUserDetails.Where(x => x.Ownerid == Id && x.LoggedIn==loggedIn).FirstOrDefault()); 
    } 

    return userDatas; 
}

3 个答案:

答案 0 :(得分:2)

更新

看到您的代码后

// And for the love of all thins neat and tidy in this world
// start methods with a capital letter :)
public tblUserData GetUserData(string Id, DateTime loggedIn)
{
   using (UsersEntities entity = new UsersEntities())
   {
      return entity.tblUserDetails
                   .FirstOrDefault(x => x.Ownerid == Id && x.LoggedIn == loggedIn);
   }

}

原始

输入时更容易

List<tblUserDetail> allUserDatas = new List<tblUserDetail>();

// populate it some how

allUserDatas = getUserData(userDetails.Ownerid, userDetails.LoggedIn).Cast<tblUserDetail>();

// now you can use Linq, yehaaa
var filter = allUserDatas.Where(x => CallerId == "asdfadsf).ToList();

Enumerable.Cast Method (IEnumerable)

  

将IEnumerable的元素转换为指定的类型。

答案 1 :(得分:0)

您可以在Linq中使用where子句

allUserDatas.Where(C => C.CallerId == "asdfadsf")

答案 2 :(得分:0)

您需要转换列表中的值:

var soughtItem =  allUserDatas.Cast<tblUserDetails>().SingleOrDefault(x => x.CallerId == "asdfadsf");

这很简单。关键是您需要将对象转换为您真正想要使用的类型。

这也将起作用:

        var soughtItem = allUserDatas.SingleOrDefault(o => ((tblUserDetails)o).CallerId == "asdfadsf") as Item;

如果多个匹配项,这些示例将给您一个错误。您也可以像以前一样使用FirstOrDefault,或者如果您的目标是选择多个,则可以执行以下操作:

var results = items.Where(o => ((tblUserDetails)o).CallerId == "asdfadsf")
                   .Select(o => o as tblUserDetails).ToList();

您有很多选择。