⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.cs

📁 移动设备的 LINQ 编程介绍 .NET Compact Framework 版 LINQ 的特性
💻 CS
字号:
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.IO;
using System.Reflection;
using Demo4___LinqToResultSet.NorthwindDataSetTableAdapters;

namespace Demo4___LinqToResultSet
{
	public partial class FrmMain : Form
	{
		SqlCeConnection northwindConnection = null;

		const string _northwindDatabaseFile = "Northwind.sdf";
		string NorthwindDatabaseFullPath
		{
			get { return Path.Combine(ApplicationFolder, _northwindDatabaseFile); }
		}

		string ApplicationFolder
		{
			get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); }
		}

		public FrmMain()
		{
			InitializeComponent();
		}

		private void FrmMain_Load(object sender, EventArgs e)
		{
			northwindConnection = new SqlCeConnection("Data Source = " + NorthwindDatabaseFullPath);
			northwindConnection.Open();
		}

		private void FrmMain_Closing(object sender, CancelEventArgs e)
		{
			if (northwindConnection != null)
				northwindConnection.Dispose();
		}

		#region DataSet Helpers

		NorthwindDataSet northwindDataSet;

		NorthwindDataSet CreateAndPopulateNorthwindDataSet(SqlCeConnection connection)
		{
			NorthwindDataSet dataSet = new NorthwindDataSet();

			// Customers Table
			DisposeItem(delegate
			{
				CustomersTableAdapter tableAdapter = new CustomersTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Customers);
				return tableAdapter;
			});

			// Suppliers Table
			DisposeItem(delegate
			{
				SuppliersTableAdapter tableAdapter = new SuppliersTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Suppliers);
				return tableAdapter;
			});

			// Employees Table
			DisposeItem(delegate
			{
				EmployeesTableAdapter tableAdapter = new EmployeesTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Employees);
				return tableAdapter;
			});

			// Shippers Table
			DisposeItem(delegate
			{
				ShippersTableAdapter tableAdapter = new ShippersTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Shippers);
				return tableAdapter;
			});

			// Categories Table
			DisposeItem(delegate
			{
				CategoriesTableAdapter tableAdapter = new CategoriesTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Categories);
				return tableAdapter;
			});

			// Products Table
			DisposeItem(delegate
			{
				ProductsTableAdapter tableAdapter = new ProductsTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Products);
				return tableAdapter;
			});

			// Orders Table
			DisposeItem(delegate
			{
				OrdersTableAdapter tableAdapter = new OrdersTableAdapter();
				tableAdapter.Connection = connection;
				tableAdapter.Fill(dataSet.Orders);
				return tableAdapter;
			});

			// Order Details Table
			DisposeItem(delegate
			{
			    Order_DetailsTableAdapter tableAdapter = new Order_DetailsTableAdapter();
			    tableAdapter.Connection = connection;
			    tableAdapter.Fill(dataSet.Order_Details);
			    return tableAdapter;
			});

			return dataSet;
		}

		delegate IDisposable GetDisposableItem();
		void DisposeItem(GetDisposableItem func)
		{
			IDisposable item = null;
			try
			{
				item = func();
			}
			finally
			{
				if (item != null)
					item.Dispose();
			}
		}

		#endregion

		#region ResultSet Helpers

		SqlCeResultSet customersResultSet;
		SqlCeResultSet employeesResultSet;
		SqlCeResultSet shippersResultSet;
		SqlCeResultSet suppliersResultSet;
		SqlCeResultSet orderDetailsResultSet;
		SqlCeResultSet ordersResultSet;
		SqlCeResultSet categoriesResultSet;
		SqlCeResultSet productsResultSet;

		void OpenResultSets()
		{
			customersResultSet = OpenResultSet("Customers");
			employeesResultSet = OpenResultSet("Employees");
			shippersResultSet = OpenResultSet("Shippers");
			suppliersResultSet = OpenResultSet("Suppliers");
			orderDetailsResultSet = OpenResultSet("Order Details");
			ordersResultSet = OpenResultSet("Orders");
			categoriesResultSet = OpenResultSet("Categories");
			productsResultSet = OpenResultSet("Products");
		}

		SqlCeResultSet OpenResultSet(string tableName)
		{
			using (SqlCeCommand command = new SqlCeCommand(tableName, northwindConnection))
			{
				command.CommandType = CommandType.TableDirect;
				return command.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Sensitive);
			}
		}

		#endregion

		private void mniPopulateDataSet_Click(object sender, EventArgs e)
		{
			int startMilliseconds = Environment.TickCount;
			Cursor.Current = Cursors.WaitCursor;

			northwindDataSet = CreateAndPopulateNorthwindDataSet(northwindConnection);

			Cursor.Current = Cursors.Default;
			int endMilliseconds = Environment.TickCount;

			MessageBox.Show((endMilliseconds - startMilliseconds).ToString(), "DataSet");
		}

		private void mniSelectFromDataSet_Click(object sender, EventArgs e)
		{
			using (FilterDialog filterDialog = new FilterDialog())
			{
				if (filterDialog.ShowDialog() == DialogResult.OK)
				{
					var selectedRows = from order in northwindDataSet.Orders
									   where order.Ship_Country == filterDialog.SelectedCountry
									   select order;

					dataGrid1.DataSource = selectedRows.AsDataView();
				}
			}
		}

		private void mniPrepareResultSets_Click(object sender, EventArgs e)
		{
			int startMilliseconds = Environment.TickCount;
			Cursor.Current = Cursors.WaitCursor;

			OpenResultSets();

			Cursor.Current = Cursors.Default;
			int endMilliseconds = Environment.TickCount;

			MessageBox.Show((endMilliseconds - startMilliseconds).ToString(), "ResultSet");
		}

		private void mniSelectFromResultSet_Click(object sender, EventArgs e)
		{
			using (FilterDialog filterDialog = new FilterDialog())
			{
				if (filterDialog.ShowDialog() == DialogResult.OK)
				{
					var selectedRows = from SqlCeUpdatableRecord order in ordersResultSet
									   where order["Ship Country"].ToString() == filterDialog.SelectedCountry
									   select new
									   {
									       OrderId = order["Order Id"],
									       ShipName = order["Ship Name"],
									       ShipCountry = order["Ship Country"]
									   };

					dataGrid1.DataSource = selectedRows.ToList();
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -