【问题标题】:Find particular items from the list object从列表对象中查找特定项目
【发布时间】:2018-08-03 04:14:15
【问题描述】:

我有一个对象列表:

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

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

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

当我试图从这个列表中获取数据时,我做不到。

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

例如:仅限 AssignedToGroup 和 CallerId

我使用了实体框架,通过使用我已经读取了我的数据并将其分配给List&lt;object&gt;

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; 
}

【问题讨论】:

    标签: c# list object find


    【解决方案1】:

    更新

    看到你的代码后

    // 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 的元素转换为指定类型。

    【讨论】:

      【解决方案2】:

      你可以在 Linq 中使用 where 子句

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

      【讨论】:

        【解决方案3】:

        您需要转换列表中的值:

        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();
        

        你有很多选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          • 2017-05-10
          • 2014-07-15
          • 2021-08-07
          • 2016-04-03
          • 1970-01-01
          • 2018-08-05
          相关资源
          最近更新 更多