2009-07-15 3 views
6

람다식이 무엇인지 알고 싶습니다. Select * from TableName입니다. 일반 LINQ와 마찬가지로 var res=from s in db.StudentDatas select s이됩니다. 여기 StudentData은 테이블의 이름입니다.Select * from TableName의 람다 식

감사합니다.

+1

람다 표현식 익명 함수가 아닌 쿼리입니다. 그들은 비록 쿼리의 일부로 사용됩니다 ... –

+5

간단한 질문으로 충분할 때 왜 이런 질문을 하향 투표합니까? –

+2

@ 로버트 하비 : 우리가 haters의 세계에 살고 있기 때문에 –

답변

12

람다 표현식이 필요하지 않습니다 ... 람다 표현식을 사용하지 않습니다

var res = db.StudentDatas; 

당신은 하나를 사용할 수 있지만, 오히려 무의미한 것 :

var res = db.StudentDatas.Select(s => s); 
+0

논리 관점에서는 필요하지 않습니다. 그러나 컴파일러가 Select() 호출을 최적화하면 LINQ to SQL에서 데이터베이스 쿼리를 호출 할 기회가 없습니다. –

+0

나는 사용하지 않겠지 만, 알고 싶었다. 표현에 감사드립니다. – Wondering

+0

@ 리차드 당신이 무슨 말을하는지 잘 모르겠습니다. 컴파일러는 실행해야하는 코드를 최적화하지 않습니다. –

1

람다식이 필요하지 않습니다. 컬렉션의 모든 구성원 만 원할뿐입니다.

3

컴파일러는이 라인을 따라 뭔가로 번역합니다

db.StudentDatas.Select(s => s) 

는 SQL에 대한 번역은 기본 클래스 라이브러리에 의해 수행된다. SQL은 물론,

+0

"db"는 무엇입니까? ? – ShaileshDev

+0

DbContext에 대한 일반적인 변수 이름 https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx –

0

둘 다 기술적으로 정확하지만 두 경우 모두 단순한 형식으로 동일한 결과를 제공하므로 db.table의 기본 동작이 "선택"이기 때문에 이러한 결과가 나타납니다. 뒤에, 그들은 다르다. 하나는 System.Data.Linq.Table이고 다른 하나는 System.Linq.IQuerable입니다. 예 :

var x = db.table ; var y= db.table(s=>s); 
X = y; 

결과로 컴파일러 오류가 발생합니다.

동적 Linq 라이브러리를 사용할 때 런타임에 동적 쿼리를 작성해야하는 경우 IQuerable을 초기 선택으로 사용해야합니다. qry = qry.Where(bla bla bla);

몇 못 세션을 물고 후 하드 방법을 그것을 찾았 qry = db.table; 그런 다음 당신이 좋아하는에 체인 쿼리를 갈 수 VAR 반대로 var qry = db.table(s=>s);을 의미합니다.

-2

코드 :

var allmember = eg_.table.where(x=>x).ToList();