表的各种东西拖进来就自动生成了,比如这个外键关系。
现在就可以使用DataClasses1DataContext dc = new DataClasses1DataContext();
了。
让我们看看里面的内容:
.layout
和.designer.cs
都是自动生成的文件:
.layout
:布局文件,don’t care..designer.cs
:是到时候怎么使用表对应的代码,和数据库基本一致。@operator
,分明数据库的表名是operator
,之所以自动生成这个样子,是因为operator
是一个关键字,VS就自动加了个符号使其不同。// 表的一行数据实体
invoice tr = new invoice();
// 使用DataClasses
DataClasses1DataContext dc = new DataClasses1DataContext();
tr.invoiceid = this.L1.Text;
// ...
dc.invoice.InsertOnSubmit(tr);
dc.SubmitChanges();
var user = dc.operator.Where(p => p.operatorid == Convert.ToInt32(this.txtID.Text.Trim())).FirstOrDefault();
var a = from p in dc.operator
where (p.operatorid == Convert.ToInt32(this.txtID.Text.Trim()))
select p.phone;
string phone = a.First();
a
是包含多个{int,int,int,int}
对象的集合,i
是每个{int,int,int,int}
对象,获取里面的值就是i.xxx
,xxx
就是p.xxx
。
// 数量
var a = from p in dc.order
where (p.date >= dateTimeBegin && p.date <= dateTimeEnd && p.shopid == value)
select new { p.water1number, p.water2number, p.water3number, p.water4number };
int[] wn = { 0, 0, 0, 0 };
foreach (var i in a)
{
wn[0] += i.water1number;
wn[1] += i.water2number;
wn[2] += i.water3number;
wn[3] += i.water4number;
}
&&
、||
var a = from p in dc.operator
where (p.operatorid == "a" && p.phone >= 1 || p.name == "Laplace")
select p.phone;
// 降序
var a = from p in dc.invoice
orderby p.invoiceid descending
select p.invoiceid;
// 升序
var a = from p in dc.invoice
orderby p.invoiceid
select p.invoiceid;
以下的操作均报错,比如System.NotSupportedException: 方法“Int32 Parse(System.String)”不支持转换为 SQL。
,System.NotSupportedException:“方法“System.String ToString(System.String)”不支持转换为 SQL
。意思就是在SQL的语句中,不能对列进行各种更改(int.Parse(p.operatorid)
,p.date.ToString("{yyyy-MM-dd}")
),只能使用原来的值才行(p.operatorid
)。
var a = from p in dc.@operator
where(int.Parse(p.operatorid)%2==0)
select p;
@operator user = a.First();
var a = from p in dc.order
where (p.date.ToString("{yyyy-MM-dd}").StartsWith(dateTimeString))
select new {
p.water1number, p.water2number, p.water3number, p.water4number };
foreach(var item in a)
{
this.TextBox.Text = item.water1number;
}
DateTime
:p.date.ToString("{yyyy-MM-dd}").StartsWith(dateTimeString)
是想转化成字符串比较年月日,既然这种方法不行,那么就比较p.date
和它同样的DateTime
类型好了。// 现在时间的DateTime
DateTime dateTime = DateTime.Now;
// 转化成字符串
string dateTimeString = dateTime.ToString("yyyy-MM-dd");
// 这天的起始
string dateTimeStringBegin = dateTimeString + " 00:00:00";
// 这天的结束
string dateTimeStringEnd = dateTimeString + " 23:59:59";
// 再转换成DateTime
DateTime dateTimeBegin = Convert.ToDateTime(dateTimeStringBegin);
DateTime dateTimeEnd = Convert.ToDateTime(dateTimeStringEnd);
DataClasses1DataContext dc = new DataClasses1DataContext();
// 数量
var a = from p in dc.order
where (p.date >= dateTimeBegin && p.date <= dateTimeEnd)
select new {
p.water1number, p.water2number, p.water3number, p.water4number };
LINQ 简单用法【1】
模糊查询
简书