2014-04-07 3 views
1

명확한 열 이름의 값을 가져 오는 것이 가능한지 알고 싶습니까? exemple SELECT NAME FROM PERSON; 문제는 열 이름을 변경할 수 있다는 것입니다C#/Linq의 명확한 열 이름 값을 얻는 방법?

string NAME; <--- Column name 
string fundPerson; 
fundPerson = context.PERSON.Where(a => a... == NAME); 

를 들어 , 그것은 항상 "NAME"열 수 없습니다. 따라서 열 이름을 쿼리에 동적으로 전달할 수있는 솔루션이 필요합니다.

+1

회원님이 요구하는 분명한 ... 그 @noobob –

답변

2

당신은 SQL 또는 Linq에 엔티티 프레임 워크에 Linq에 아래 SELECT NAME FROM PERSON로 컴파일 LINQ 쿼리를 작성하는 C#의 소스 코드를 원하십니까?

IEnumerable<string> names = from x in context.PERSONS 
          select x.Name; 

또는

IEnumerable<string> names = context.PERSONS.Select(x => x.Name); 

는 모나드 말투에서는 Name 속성 상에 투영합니다.

편집 : 어떤 열을 동적으로 지정 하시겠습니까?

string columnName = "Name"; 
ParameterExpression personExpression = Expression.Parameter(typeof(Person), "p"); 
Expression<Func<Person, string>> column = Expression.Lambda<Func<Person, string>>(Expression.PropertyOrField(personExpression, columnName), personExpression); 

IEnumerable<string> things = context.PERSONS.Select(column); 
+0

예 아니다, 변경할 수 있다는 것입니다하지만 난 할 때 이 Expression.Lambda 에 대한 오류가 있습니다. 비 제너릭 메서드를 형식 인수로 사용할 수 없다고 말합니다. – user3505662

+0

미안 해요. 'Func' 내부를 놓쳤습니다. – Aron

+0

내부 Func. ??? – user3505662

0

노력이

fundPerson = context.PERSON.Where(a=>a... == NAME).Select(a=>a.NAME).SingleOrDefault(); 
+0

이야 또한 올바른 ... – Nilesh

+0

문제는 열 이름이 항상 "NAME"colomn – user3505662

0

귀하의 질문은 이름의 수집 후, 당신은 SQL을 실행 얻을 것이 무엇처럼 "사람에게서 이름을 선택".. 오해의 소지가 조금있다?

그렇다면, Linq에 - 투 - SQL 구문을 사용하여 : 당신의 이름 문자열을 기반으로, 특정 사람을 찾기 위해 노력하는 경우

var people = from p in context.PERSON select a.NAME; 

를?

string name = "barry"; 
var person = from p in context.PERSON select a where a.NAME.Contains(name);