검색결과 리스트
.NET/LINQ에 해당되는 글 8건
- 2010.12.09 [LINQ] LINQ를 공부하쟈~
- 2009.04.26 LINQ to ADO.NET -2
- 2009.04.26 LINQ to ADO.NET -1 1
- 2009.04.26 LINQ to Object - 3
- 2009.04.26 LINQ to Obejct -2
- 2009.04.26 LINQ to Object -1
- 2009.04.26 LINQ ..
- 2009.04.26 LINQ 소개
using (DataClasses1DataContext db = new DataClasses1DataContext()) { var r01 = from x in db.LINQTEST where x.age > 20 select x; foreach (var x in r01) { Console.WriteLine(x.name); } }
using (DataClasses1DataContext db = new DataClasses1DataContext()) { //객체를 만듭니다 LINQTEST newData = new LINQTEST(); //데이터를 넣습니다 newData.name = "피요히코"; newData.age = 30; newData.comment = "추가된 데이터입니다."; //변경된 내용을 반영합니다. db.LINQTEST.InsertOnSubmit(newData); db.SubmitChanges(); }
using (DataClasses1DataContext db = new DataClasses1DataContext()) { var searchItem = (from x in db.LINQTEST where x.name == "피요히코" select x).SingleOrDefault(); //Single()로 검색할경우 해당값이 없으면 Exception발생 //SingleOrDefault()의 경우는 값 없을때 Null 리턴 if (searchItem != null) { //searchItem이 null이 아닌경우 comment를 변경 searchItem.comment = "변경되었어요....."; } //변경내용 확인 var r01 = (from x in db.LINQTEST where x.name == "피요히코" select x).SingleOrDefault(); Console.WriteLine(r01.comment); }
using (DataClasses1DataContext db = new DataClasses1DataContext()) { var searchItem = (from x in db.LINQTEST where x.name == "피요히코" select x).SingleOrDefault(); //삭제 db.LINQTEST.DeleteOnSubmit(searchItem); db.SubmitChanges(); //결과확인 var searchItem2 = (from x in db.LINQTEST where x.name == "피요히코" select x).SingleOrDefault(); if (searchItem2 == null) { Console.WriteLine("지워졌다. ㅠㅠ"); } else Console.WriteLine(searchItem2.name); }
이번에는 (좀더 많이 쓸수 있어 보이는)
LINQ to ADO.NET에 대해 봐볼께요
(LINQ to SQL이라고 해도 될듯한..)
이녀석은 일단 몇가지 선행작업이 필요해요.
일단 test해볼 테이블을 하나 만들었습니다.
int[] nums = { 10, 9, 8, 7, 5, 6, 4, 3, 2, 1 }; var r01 = nums.Take(3); var r02 = nums.Skip(3); var r03 = nums.TakeWhile(x => x > 5); var r04 = nums.SkipWhile(x => x > 5);
ArrayList src = new ArrayList(); for (int i = 0; i < 10; i++) { src.Add(i + 1); }
var r01 = from x in src where x > 3 select x;
이렇게 해주면 바로 오류가 납니다.
오류 내용은
소스형식 'System.Collections.ArrayList'에 대해 구현된 쿼리 패턴을 찾을 수 없습니다.
'Where'을(를) 찾지 못했습니다. 범위 변수 'x'의 형식을 명시적으로 지정하십시오.
라고 나오네요
ArrayList를 사용하고 싶으면
casting을 해줘야 해요
var r01 = from x in src.Cast() where x > 3 select x;
앞에 포스팅했던 LINQ to Object 이어서 줄줄 입니다.
이번에는 간단하게 SubQuery에 대해 볼께요.
그냥 쿼리 안에 쿼리가 있는건데
T-SQL에서도 조건에 쿼리를 붙이고 하는걸 LINQ로 하면요
string[] names = { "Tom", "Bill", "Harry", "June", "Mary", "Jay" }; var r01 = from x in names where x.Length == ( from y in names orderby y.Length select y).First().Length select x; foreach (var x in r01) { Console.WriteLine(x); }
var r01 = from x in names where x.Contains("a") select x into subSet where subSet.Length > 4 orderby subSet select subSet;
(제가 이해한게 맞다면)
into는 (단어 뜻 그대로)
into키워드 앞의 결과를 뒤에 넣어주는거죠
코드를 보면
x를 subSet에 into했네요.
그 다음에 subSet을 가지고
조건을 걸어서(정렬조건도)
select~
그럼 결과는 어떻게 나올까요?
이름에 "a"가 들어간 놈을 찾아서 나온 결과들중에서(이게 x)
길이가 4 이상인 녀석들을 select하니까.
var r01 = from x in names let temp = x.Replace("a", "") where x.Contains("a") select new { Original = x, Change = temp };
private static void QuetyTest() { string[] names = { "Tom", "Bill", "Harry", "June", "Mary", "Jay" }; var r01 = from x in names where x.Contains("a") orderby x.Length select x; foreach (var x in r01) { Console.WriteLine(x); } }
var numbers = new List(); numbers.Add(1); var r01 = numbers.Select(x => x * 10); numbers.Add(2); foreach (var x in r01) { Console.WriteLine(x); }
var r01 = numbers.Select(x => x * 10).ToList();
LINQ(통합 언어 쿼리)는 개체와 데이터 간 격차를 줄이므로 Visual Studio 2008 및 .NET Framework 버전 3.5에서 획기적인 혁신입니다.
일반적으로 데이터에 대한 쿼리는 컴파일 시 형식 검사 또는 IntelliSense 지원 없이 단순 문자열로 표현됩니다. 게다가 각 데이터 소스 형식에 대해 SQL 데이터베이스, XML 문서, 다양한 웹 서비스 등 다양한 쿼리 언어를 배워야 합니다. LINQ는 C# 및 Visual Basic에서 쿼리를 고급 언어 구문으로 만듭니다. 언어 키워드 및 친숙한 연산자를 사용하여 개체에 대한 강력한 형식의 컬렉션에 대해 쿼리를 작성합니다. 다음 그림에서는 전체 형식 검사 및 IntelliSense 지원을 사용하여 C#에서 SQL Server 데이터베이스에 대해 부분적으로 완료된 LINQ 쿼리를 보여 줍니다.
Visual Studio에서는 Visual Basic 또는 C#을 사용하여 SQL Server 데이터베이스, XML 문서, ADO.NET 데이터 집합 및 IEnumerable 또는 제네릭 IEnumerable<(Of <(T>)>) 인터페이스를 지원하는 개체의 컬렉션에 대한 LINQ 쿼리를 작성할 수 있습니다. ADO.NET Entity Framework에 대한 LINQ 지원도 계획되어 있으며 여러 웹 서비스 및 다른 데이터베이스 구현에 대한 LINQ 공급자도 타사에 의해 개발되고 있습니다.
새 프로젝트의 LINQ 쿼리나 기존 프로젝트의 LINQ가 아닌 쿼리를 함께 사용할 수 있습니다. 단, 프로젝트에서 .NET Framework 버전 3.5를 대상으로 해야 합니다.
RECENT COMMENT