3 回答
![?](http://img1.sycdn.imooc.com/545866c40001561502200220-100-100.jpg)
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 的元素强制转换为指定类型。
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
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();
你有很多选择。
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
TA贡献1852条经验 获得超7个赞
您可以在 Linq 中使用 where 子句
allUserDatas.Where(C => C.CallerId == "asdfadsf")
- 3 回答
- 0 关注
- 237 浏览
添加回答
举报