为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
PIPIONE 2021-11-14 10:10:03
我有一个对象列表: 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; }
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超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)

{

   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 方法 (IEnumerable)


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


查看完整回答
反对 回复 2021-11-14
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您需要转换列表中的值:

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

你有很多选择。


查看完整回答
反对 回复 2021-11-14
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您可以在 Linq 中使用 where 子句

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


查看完整回答
反对 回复 2021-11-14
  • 3 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信