2013-03-15 4 views
1

데이터 테이블에서 두 개의 필드를 가져와야합니다. 그리고 나서 나는 하나를 점검해야한다. "listIDStr"uniqe가 아닌 userID의 목록을 유지합니다. 그래서 사용해야합니다 "나는 행을 업데이트 기본 키 ID를.여러 필드에 대해 linq convertall

List<string> listIDStr = new List<string>(); 
... 
var sqlData = SqlDataBase.SqlGetTable("SELECT ID,UserID FROM TBL_UserT WHERE SID = " + 4663 + " AND UserID = '" + UserID + "'") 
          .AsEnumerable() 
          .ToList() 
          .ConvertAll(x=>x.Field<string>("UserID")) 
          .ToList(); 

List<string> Cikan = sqlData.Where(x => !listIDStr.Contains(x)).ToList(); 
List<string> Eklenen = listIDStr.Where(x => !sqlData.Contains(x)).ToList(); 

위의 코드는 하나의 field.But에 대한 실행 내가 싶어"사용자 ID ","와 함께 "ID를. 사람이 있습니까 그것을 어떻게하는지 좋은 생각?

+0

var user = SqlDataBase.SqlGetTable("select Id, Name from User where ...") .AsEnumerable() .ToList() .Select(x => new { x.Id, x.Name }) .SingleOrDefault(); int userId = user.Id; string username = user.Name; 

익명 객체하지만 난 호기심 사람입니다. 'SqlDataBase.SqlGetTable();'에 어떻게 접근합니까? 그것은 커스텀 클래스입니까? 나는 그것을 쓸데없이 붙이려고했다. OT에 대해 다시 한 번 미안합니다. – mackwerk

+0

예 SqlDataBase는 클래스이고 SqlGetTable은 함수입니다. :) – RockOnGom

+0

맞춤 클래스입니까? VWD2010 – mackwerk

답변

7

사용 익명 형식, here is the MSDN link. 기본적으로

var dtEnumerable = SqlDataBase.SqlGetTable("SELECT ID,UserID FROM TBL_UserT WHERE SID = " + 4663 + " AND UserID = '" + UserID + "'").AsEnumerable().ToList(); 

var newVariable = dtEnumerable.Select(x => new { UserID = x.Field<string>("UserID"), ID = x.Field<string>("ID") }); 
//Get new/old 
var states = newVariable.Select(x => new { IsNew = !listIDStr.Contains(x.UserId), IsUpdate = listIDSTr.Contains(x.UserID), ID = x.UserID }); 
var updates = states.Where(x => x.IsUpdate).Select(x => x.UserID); 
var newIds = states.Where(x => x.IsNew).Select(x => x.UserID); 
//We now have access to both! 
string firstUserID = newVariable.First().UserID; 
string firstID = newVariable.First().ID; 
+0

답변 해 주셔서 감사합니다. 아직 시도하지 않았습니다. 왜냐하면 "Cikan"과 "Eklenen"을 쓸 수 없기 때문입니다. "Cikan"과 "Eklenen"이라고 쓸 수 있습니까? – RockOnGom

+0

@zeitgeist 이제 조합으로 인해'List '하나만 필요하겠습니까? 변수 이름을 이해할 수 없으므로 정확하게 원하는 것을 설명해야 할 수도 있습니다. – LukeHennerley

+0

"Cikan"은 나가는 사용자입니다. "Eklenen"은 새로운 사용자입니다. 그래서이 "사용자는 새로운 것"이라는 것을 알았습니다. 또는 "사용자가 발신 중입니까?" – RockOnGom

0

당신이 "프로젝트"데이터가, 객체의 다른 종류로 다시 경우 심지어 익명을오고 싶어 ' 메서드 바깥으로 전달할 계획이 없다.

여기 오프 주제 질문에 대한 죄송 강력한 형식의 객체

var user = SqlDataBase.SqlGetTable("select Id, Name from User where ...") 
         .AsEnumerable() 
         .ToList() 
         .Select(x => new UserViewModel { Id = x.Id, Name = x.Name }) 
         .SingleOrDefault(); 

int userId = user.Id; 
string username = user.Name; 
관련 문제