【发布时间】:2013-05-15 17:00:41
【问题描述】:
我以前从未见过这个错误,它非常令人困惑,我实际上是在尝试做一些事情,我说找到与传入的位置名称和类型匹配的所有位置(只会返回一个):
string name = columns[40];
Location type = db.Locations.Where(l => l.name == name).FirstOrDefault();
Location loc = db.Locations.Where(l => l.name == name && l.type == type.type).FirstOrDefault();
可能有更好的方法可以一举完成我想做的事情,但基本上我从列中获取名称(这来自 csv 文件),然后说,获取我的位置信息。在此之后,我说好了,现在我已经拥有了所有爵士乐,去给我找一个有这个名字和它的类型的位置。
但我得到了错误:
非静态方法需要一个目标
所有这些代码运行的顶级方法是:
static void Main(string[] args){}
本质上它只是一个控制台应用程序。那到底是怎么回事?
- db 是上下文类,这应该很明显。
- columns 是我从 csv 文件中提取数据,在这种情况下,columns[40] 类似于“纽约”
来自堆栈跟踪的完整错误消息: {“非静态方法需要一个目标。”}
注意:作为“可能的答案”发布的问题在这种情况下没有帮助,因为我运行此代码的主要方法是静态的。
经过进一步调查,我发现名称和类型为空,因此我进行了以下修复:
if (name != null)
{
Location type = db.Locations.Where(l => l.name == name).FirstOrDefault();
Location loc = db.Locations.Where(l => l.name == name && l.type == type.type).FirstOrDefault();
locationNearbyId = loc.id;
// More code
}
唉,我仍然收到错误:Location loc = db.Locations.Where(l => l.name == name && l.type == type.type).FirstOrDefault();
【问题讨论】:
-
错误究竟在哪里?
db是什么?columns是什么? -
你能发布完整的错误信息吗?它在谈论哪种非静态方法?在哪条线上?
-
问题已更新,可能的答案对我没有帮助。请对此进行更多扩展。 @JonSkeet 请在回答之前阅读完整的问题
-
第二个表达式中的
name或type.type是否恰好为空?
标签: linq