はじめに
前回は、
LINQ(Language Integrated Query)
var q =
from x in this.Collection
where x.Age < 20
orderby x.Name
select new { Code = x.Code, Name = x.Name };
List<Item> q = new List<Item>();
foreach (Member x in this.Collection) {
if (x.Age < 20) {
Item item = new Item();
item.Code = x.Code;
item.Name = x.Name;
q.Add(item);
}
}
q.Sort(delegate(Item a, Item b) {
return string.Compare(a.Name, b.Name); });
上記はthis.
- 未成年
(Ageプロパティの値が20未満) のアイテムのみ - 名前順に並べ替え
- Code、
Nameプロパティだけをメンバとしたオブジェクトに格納
C#2.
また、
foreach(var item in q) {
Console.WriteLine(item.Code.ToString() + ":" item.Name);
}
LINQとは
LINQとは、
LINQでできること
LINQでは、
- LINQ to Objects
- LINQ to XML
- LINQ to DataSets
- LINQ to SQL
- LINQ to Entities
上記を見ると、
なお、
LINQ to Objects
恐らくLINQ to Objectsは、
LINQ to Objectsは、
例えば、
var q =
from DataGridViewColumn column in grid.Columns
where column.Visible
orderby column.DisplayIndex
select p.Index;
if (q == null) return;
var columnLeftIndex = q.First();
grid.CurrentCell = grid[columnLeftIndex, 0];
grid.
IEnumerable<T>のようにコレクションに格納されるデータ型が明確に指定されていないため、
LINQ to XML
XMLのXElementに対してクエリー式を適用できます。
LINQ to XMLを実行するためには、
以下のコードは、 ADO. 以下のコードは、 SQLサーバー上のデータベースに対してクエリー式を適用できます。 以下のコードは、 ADO. 以下のコードは、 クエリー式の正体は、 以下の2つのコードを見比べてみてください。 長いので改行されていますが、 今回は、 これによって、var d = XDocument.
LINQ to DataSets
using(var ds = new MyDataSet()) {
using(var ad = new MyDataTableAdapter()) {
ad.Fill(ds.MyDataTable);
}
var q =
from x in ds.MyDataTable
where x.Age < 20
select x.Name;
}
LINQ to SQL
using (var db = new MyDataContext(ConnectionString)){
var q =
from x in db.MyDataTable
where x.Age < 20
select x.Name;
}
LINQ to Entities
var q =
from x in context.MyDataTable
where x.Age < 20
select x.Name;
}
クエリー式の正体
var q =
from x in this.Collection
where x.Age < 20
orderby x.Name
select new { Code = x.Code, Name = x.Name };
var q =
this.Collection
.Where(x => x.Age < 20)
.OrderBy(x => x.Name)
.Select(x => new { Code = x.Code, Name = x.Name });
次回の予定