【问题标题】:SUPER SIMPLE LINQ to filter row does not work [closed]超级简单的 LINQ 过滤行不起作用 [关闭]
【发布时间】:2015-02-27 21:54:54
【问题描述】:

花了大约 4 个小时试图解决这个问题,但没有成功。

IQueryable<userTOM> Infolist =  userTOMs();
        var rbtUserId = Infolist.Where(x => x.UserName == FormsUserName);

userTOMs

【问题讨论】:

  • 函数userTOMs的resulttype是什么?
  • 请提及您从哪里定义方法 userTOMs();
  • 我想从用户表中获取与FORMS用户名对应的ID。所有用户名都是不同的,因此只会出现一条记录。
  • 我通过将表从服务器资源管理器拖到 OK 界面来定义它们,然后我将用户表命名为 userTOM,保存并构建项目。 // // 此代码是由工具生成的。 // 运行时版本:4.0.30319.34014
  • 您需要详细说明才能理解该问题。什么不出现?结果还是方法还是userId?

标签: linq iqueryable


【解决方案1】:

IQueryable 不会立即在数据库上运行。为了运行查询,必须在 IQueryable 上运行 .ToList().Count() 等函数。

因此,您粘贴的代码中没有任何内容会触发数据库请求,并且不会检索 ID。我会将您的请求修改为:

IQueryable<userTOM> Infolist =  userTOMs();
userTOM rbtUser = Infolist.FirstOrDefault(x => x.UserName == FormsUserName);

Guid rbtUserId; //assuming this will be populated with a Guid value
if (rbtUser != null) {
    rbtUserId = rbtUser.Id; //assuming "ID" is the property name
}

【讨论】:

  • 我现在更了解 LINQ 并将使用这个 sn-p。谢谢。 userTOM 没有下划线,而 userTOMs 仍然带有红色下划线。 :( 我希望我只需要在命名空间代码中添加一些东西?
  • "名称'userTOMs'在当前上下文中不存在"
  • 这是在我的课上: public System.Data.Linq.Table userTOMs { get { return this.GetTable(); } } 公共 System.Data.Linq.Table MessageStageTOMs { 获取 {
  • 嗯,听起来userTOMs 是一个表格,而你把它当作一个函数来使用.. 所以也许改成IQueryable&lt;userTOM&gt; Infolist = userTOMs.FirstOrDefault(x =&gt; x.UserName == FormsUserName);
  • 做到了。谢谢。我不知道有什么区别..
猜你喜欢
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多