2014-01-16 170 views
-2

下面的代码将选择表中的所有行,但我只想选择传入方法的行的id。我已经尝试了多种方式,现在开始新鲜,看看我能否得到它的工作。任何帮助表示赞赏。使用LINQ的WHERE子句

这里是我的代码:

[WebMethod] 
public static string getProjectByID(int id) 
{ 
    using (dbPSREntities4 myEntities = new dbPSREntities4()) 
    { 
     var thisProject = myEntities.tbProjects.ToList(); 

     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     var json = serializer.Serialize(thisProject); 

     return json; 
    } 
} 

回答

5

你想使用Where方法来过滤数据:

var thisProject = myEntities.tbProjects.Where(x => x.yourIdColumn == id).ToList(); 
+1

的SingleOrDefault很可能是一个更好的方法,在这里使用 – Joe

+1

假设ID是唯一的,这你会觉得这是... –

3

where子句是相当简单的在这里。您只需使用lambda表达式来指定您匹配的条件。如果你不熟悉他们更多的信息可以在这里找到http://msdn.microsoft.com/en-us/library/bb397687.aspx的基本知识是你有一个变量名,其次是=>在右边你可以做你想要的变量,我觉得最简单的想法是像foreach那样工作,其中声明的变量名称是迭代变量(列表中的项目)。

var thisProject = myEntities.tbProjects.Where(x => x.Id == id).ToList(); 
+0

我认为,如果你遵循的格式也可能是更清晰的OP他的一点代码,并使参数匹配他所指的'id'。只是我的想法... –

+0

@ jimtollan是的,这是一个简单的改变。他的代码实际上并没有太紧密,只是拉了一条线,并添加了一个地方。 – evanmcdonnal

+0

+1为反应参与:-)。再加上一个很好的小解释... –