Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Select*from TableName的Lambda表达式_C#_Linq_C# 3.0 - Fatal编程技术网

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中的s
var 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)与var
qry=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的常用变量名