2013-04-23 2 views
2

그래서 열거 형을 사용하려고합니다. PHP에서 온 것처럼 잘못된 방식 일 것입니다. 수행하여 거기에서Enums 이해하기 - 상수로 사용하기

public static class GlobalTypes 
{ 
    public enum assignmentType { SERV = "SERV", PROD = "PROD", PER = "PER", } 
} 

내가 개체와 상호 작용하는 것을 시도하고있다 : C#에서 내가 수행하는 글로벌 클래스가

public static IEnumerable<Person> getAllAgents(int id) 
    { 
     using (var db = new LocAppContext()) 
     { 
      var person = (from p in db.Person 
          join la in db.LocationAssignment on p.id equals la.value 
          where la.locationID == id && la.type == GlobalTypes.assignmentType.PER 
          select p).ToList(); 

      return person; 
     } 

    } 

하지만 오류가 점점 오전 :

Operator '==' cannot be applied to operands of type 'string' and 'LocApp.Helpers.Classes.LocationAssignments.GlobalTypes.assignmentType'

을 어느 곳에서 일어나는가

la.type == GlobalTypes.assignmentType.PER 

내 논리, 그리고 이것은 PHP에서, 내가 상수 값을 변경할 수 있지만 그것을 변경하지 않아도 그 상수의 값을 밖으로 "어디서나"호출 할 수있는 전역 상수를 원하는 것입니다 백만 장소에.

아이디어가 있으십니까?

+1

은 그냥'= "SERV를"'도랑 부분적으로 잘되어야합니다. 다음은 C#의 열거 형 사용법에 대한 MSDN 설명서입니다. http://msdn.microsoft.com/en-ca/library/vstudio/cc138362.aspx 편집 : 또한 la.type은 'GlobalTypes.assignmentType '문자열이 아니야. –

+6

열거 형은 문자열이 아니며 C#은 PHP가 아닙니다. – alex

+0

@ChrisSinclair 그럼 내가 할 수 있다고 말하는거야 : '&& GlobalTypes.assignmentType' ?? 내가 원하는 걸 알게 될거야? – TheWebs

답변

4

상수 문자열을 원하면 enum을 사용하지 마십시오. Enum은 정수형입니다. 그냥 consts를 사용

public static class MyClass 
{ 
    public const string PROD = "PROD"; 
    public const string DEV = "DEV"; 
} 

// elsewhere... 
la.type == MyClass.PROD; 
4

빠른 대답 :

public enum assignmentType { SERV, PROD, PER } 

과 비교

이 (가정 la.type 문자열을 반환) :

where la.locationID == id && la.type == GlobalTypes.assignmentType.PER.ToString() 
+3

열거 형을 사용할 필요가 없어도 이것을 수행하지 않으시겠습니까? enum을 사용하는 것은이 문제에 대한 완벽하게 적절한 해결책과 같습니다. – Servy

+0

문제 : LINQ to Entities가 'System.String ToString()'메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다. la.type, befor 이것은 다음과 같았습니다 : la.type == "PER"그렇습니다. 오류가 어떻게 계속 일어 났습니까? – TheWebs

+1

@Servy와 동의하십시오. 열거 형은 3 개의 값을 그룹화하는 데 사용되므로 좋은 솔루션입니다. 다른 사람들처럼 상수를 사용하면 그룹화가 제거됩니다. 아마도 ToString을 사용하고 쿼리에 사용되는 임시 문자열에 저장하십시오. 코드의 다른 부분에서 재사용 열거를하는 것이 의미가 있습니다. – Dave