猿问

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

我有一个对象列表:

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

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

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

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

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


例如:仅 AssignedToGroup 和 CallerId


我使用了实体框架,通过使用我已经读取了我的数据并将其分配给 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; 

}


PIPIONE
浏览 238回答 3
3回答

白板的微信

更新看到你的代码后// 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){&nbsp; &nbsp;using (UsersEntities entity = new UsersEntities())&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; return entity.tblUserDetails&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.FirstOrDefault(x => x.Ownerid == Id && x.LoggedIn == loggedIn);&nbsp; &nbsp;}}原来的如果打字会更容易List<tblUserDetail> allUserDatas = new List<tblUserDetail>();// populate it some howallUserDatas = getUserData(userDetails.Ownerid, userDetails.LoggedIn).Cast<tblUserDetail>();// now you can use Linq, yehaaavar filter = allUserDatas.Where(x => CallerId == "asdfadsf).ToList();Enumerable.Cast 方法 (IEnumerable)将 IEnumerable 的元素强制转换为指定类型。

慕姐8265434

您需要转换列表中的值:var&nbsp;soughtItem&nbsp;=&nbsp;&nbsp;allUserDatas.Cast<tblUserDetails>().SingleOrDefault(x&nbsp;=>&nbsp;x.CallerId&nbsp;==&nbsp;"asdfadsf");这很直接。关键是您需要将对象强制转换为您真正想要使用的类型。这也将起作用:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;soughtItem&nbsp;=&nbsp;allUserDatas.SingleOrDefault(o&nbsp;=>&nbsp;((tblUserDetails)o).CallerId&nbsp;==&nbsp;"asdfadsf")&nbsp;as&nbsp;Item;如果有多个匹配,这些示例会给您一个错误。你也可以像你一样使用 FirstOrDefault,或者如果你的目标是选择多个,你可以这样做:var&nbsp;results&nbsp;=&nbsp;items.Where(o&nbsp;=>&nbsp;((tblUserDetails)o).CallerId&nbsp;==&nbsp;"asdfadsf") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Select(o&nbsp;=>&nbsp;o&nbsp;as&nbsp;tblUserDetails).ToList();你有很多选择。

慕姐4208626

您可以在 Linq 中使用 where 子句allUserDatas.Where(C&nbsp;=>&nbsp;C.CallerId&nbsp;==&nbsp;"asdfadsf")
随时随地看视频慕课网APP
我要回答