C# Select*from TableName的Lambda表达式
我只是想知道C# Select*from TableName的Lambda表达式,c#,linq,c#-3.0,C#,Linq,C# 3.0,我只是想知道Select*fromtablename的lambda表达式是什么。 与普通LINQ一样,它将是db中的svar res=from。学生数据选择s; 这里StudentData是表的名称 谢谢。您不需要lambda表达式。您只需要集合的所有成员。编译器将按照以下方式将其转换为: db.StudentDatas.Select(s => s) 到SQL的转换由基类库完成。当然,SQL不使用lambda表达式…不需要lambda表达式: var res = db.StudentDa
Select*fromtablename
的lambda表达式是什么。
与普通LINQ一样,它将是db中的svar res=from。学生数据选择s
;
这里StudentData
是表的名称
谢谢。您不需要lambda表达式。您只需要集合的所有成员。编译器将按照以下方式将其转换为:
db.StudentDatas.Select(s => s)
到SQL的转换由基类库完成。当然,SQL不使用lambda表达式…不需要lambda表达式:
var res = db.StudentDatas;
您可以使用一个,但这是毫无意义的:
var res = db.StudentDatas.Select(s => s);
虽然两者在技术上都是正确的,因为它们都会以简化的形式给出相同的结果,但这只是因为
db.table
的默认行为是“选择”。在幕后,他们是不同的。一个是System.Data.Linq.Table
,另一个是System.Linq.IQuerable
。
比如说
var x = db.table ; var y= db.table(s=>s);
X = y;
将导致编译器错误
使用动态Linq库时,如果必须在运行时创建动态查询,则必须使用IQuerable
作为初始选择。这意味着var qry=db.table(s=>s)代码>与varqry=db.table相反代码>
然后您可以继续并链接查询,如:qry=qry.Where(blablablabla)代码>
经过几次咬指甲的训练,我终于找到了答案。代码:
var allmember = eg_.table.where(x=>x).ToList();
Lambda表达式是匿名函数,而不是查询。不过,它们被用作提问的一部分……为什么像这样的问题会被否决,而一个简单的解释就足够了?@Robert Harvey:因为我们生活在一个充满仇恨的世界里,我也讨厌在没有正确思考的情况下否决。我想那些这样做的人会得到某种“刺激”。从逻辑角度来看,这不是必需的,但是如果编译器优化了Select()调用,那么LINQ to SQL就没有机会调用数据库查询。我不会使用,但只是想知道。谢谢你的表达式。@Richard我不确定你在说什么。编译器不会优化您需要运行的代码。@Gary我将Wondering的问题解释为“幕后发生了什么”,而不是“最好的方法是什么”。幕后发生的是“select”关键字变成了IQueryable上的静态方法调用,谁的参数是我们在回答中给出的lambda。什么是“db?”?它是DbContext的常用变量名