例一:
本回使用的資料表如下:
以下程式先用sql查詢存入datatable再用linq取值
namespace WindowsFormsApp3
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// 連接字串
string connectionString = "Data Source=127.0.0.1,1433;Initial Catalog=Animal;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 創建一個 SQL 查詢SELECT [id],[name],[color] FROM [Animal].[dbo].[Animal]
string sqlQuery = "SELECT [id], [name],[color] FROM [Animal].[dbo].[Animal]";
// 使用 SqlDataAdapter 執行查詢並將結果存入一個 DataTable
SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// 使用 LINQ 查詢 DataTable
var query = from row in dataTable.AsEnumerable()
select new
{
id = row.Field<int>("id"),
name = row.Field<string>("name"),
color = row.Field<string>("color")
};
Console.WriteLine("Query Result:");
foreach (var result in query)
{
Console.WriteLine($"ID: {result.id}, Name: {result.name}, color: {result.color}");
}
}
}
}
// 定義 Entity Framework DbContext
class YourDbContext : System.Data.Entity.DbContext
{
public YourDbContext(SqlConnection connection) : base(connection, contextOwnsConnection: false) { }
public System.Data.Entity.DbSet<Animal> Animals { get; set; }
}
// 定義 Animal 實體類別,對應到資料庫的 Animal 表格
class Animal
{
public int id { get; set; }
public string name { get; set; }
}
}
輸出結果:
Query Result:
ID: 1, Name: 狗, color: 黑
ID: 2, Name: 馬, color: 黑
ID: 3, Name: 羊, color: 白
例二:
linq的資料來源可以是各種類型的集合,因此上述的例子可以用list類別重寫
以下這個例仔是先建置list類別資料,再用linq取值:
namespace WindowsFormsApp3
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{
// 建立包含 Animal 物件的 List
List<Animal> animals = new List<Animal>
{
new Animal { Id = 1, Name = "狗", Color = "黑" },
new Animal { Id = 2, Name = "馬", Color = "黑" },
new Animal { Id = 3, Name = "羊", Color = "白" },
};
// 使用 LINQ 查詢並選取 Id 和 Name 列的值
var query = from animal in animals
select new
{
Id = animal.Id,
Name = animal.Name,
Color = animal.Color
};
Console.WriteLine("Query Result:");
foreach (var result in query)
{
Console.WriteLine($"ID: {result.Id}, Name: {result.Name}, Color: {result.Color}");
}
}
// 定義 Animal 類別,模擬資料集合中的 Animal 物件
public class Animal
{
public int Id { get; set; }
public string Name { get; set; }
public string Color { get; set; }
}
}
}
輸出結果同上:
Query Result:
ID: 1, Name: 狗, color: 黑
ID: 2, Name: 馬, color: 黑
ID: 3, Name: 羊, color: 白
如果要查詢黑色毛皮的動物,要在以下的位置加入where animal.Color == "黑",就能只查詢黑色毛皮的動物
// 使用 LINQ 查詢並選取 Id 和 Name 列的值
var query = from animal in animals
where animal.Color == "黑"
select new
{
Id = animal.Id,
Name = animal.Name,
Color = animal.Color
};
以下是查詢結果
以上就是本回的教學
Query Result:
ID: 1, Name: 狗, Color: 黑
ID: 2, Name: 馬, Color: 黑