我有一个对象列表:
List<Object> allUserDatas = new List<Object>();
我已经阅读了数据表单数据库并将记录(行)存储在此allUserDatas
列表中。
allUserDatas = getUserData(userDetails.Ownerid, userDetails.LoggedIn);
当我试图从该列表中获取数据时,我无法做到这一点。
如何从此列表中获取特定数据?
对于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;
}
答案 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();
您有很多选择。