假设我有一个名为Items的表(ID int,Done int,Total int)
我可以通过两个查询来完成:
int total = m.Items.Sum(p=>p.Total)
int done = m.Items.Sum(p=>p.Done)
Run Code Online (Sandbox Code Playgroud)
但我想在一个查询中执行此操作,如下所示:
var x = from p in m.Items select new { Sum(p.Total), Sum(p.Done)};
Run Code Online (Sandbox Code Playgroud)
当然有一种方法可以从LINQ语法中调用聚合函数......?
在我读了一堆LINQ相关的东西之后,我突然意识到没有文章介绍如何编写异步LINQ查询.
假设我们使用LINQ to SQL,下面的语句很清楚.但是,如果SQL数据库响应缓慢,则使用此代码块的线程将受到阻碍.
var result = from item in Products where item.Price > 3 select item.Name;
foreach (var name in result)
{
Console.WriteLine(name);
}
Run Code Online (Sandbox Code Playgroud)
似乎当前的LINQ查询规范不提供对此的支持.
有没有办法做LINQ异步编程?当结果准备好使用而没有I/O上的任何阻塞延迟时,它就像有一个回调通知.
我已经掌握了LINQ-to-SQL的基础知识,但我一直在努力让JOIN正常工作.我想知道如何将以下内容转换为LINQ-to-SQL(理想情况下使用方法链接,因为这是我的首选格式).
SELECT c.CompanyId, c.CompanyName,
p.FirstName + ' ' + p.LastName as AccountCoordinator,
p2.FirstName + ' ' + p2.LastName as AccountManager
FROM dbo.Companies c
INNER JOIN dbo.Persons p
ON c.AccountCoordinatorPersonId = p.PersonId
INNER JOIN dbo.Persons p2
ON c.AccountManagerPersonId = p2.PersonId
Run Code Online (Sandbox Code Playgroud) 我有一个需要存储的小项目(我选择了SQLite),我用.Net for Sqlite的ADO DLL得到了很好的结果.
安装后,我注意到它包含一个SQLLinq.dll.在调查太多努力之前,以及因为我没有在网上看到任何好的例子,我想知道是否有人用SQLite和LINQ获得任何好的结果?
*如果linqtosql以与SQL数据库相同的方式工作,请告诉我.当我看到它时,我对Dll感兴趣,因为我之前从未使用过Linqtosql,我认为这是一个很好的尝试机会,
我必须执行以下SQL查询:
select answer_nbr, count(distinct user_nbr)
from tpoll_answer
where poll_nbr = 16
group by answer_nbr
Run Code Online (Sandbox Code Playgroud)
LINQ to SQL查询
from a in tpoll_answer
where a.poll_nbr = 16 select a.answer_nbr, a.user_nbr distinct
Run Code Online (Sandbox Code Playgroud)
映射到以下SQL查询:
select distinct answer_nbr, distinct user_nbr
from tpoll_answer
where poll_nbr = 16
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是在尝试GROUP结果时问题就出现了,因为我无法找到映射到我在这里写的第一个查询的LINQ to SQL查询(感谢LINQPad让这个过程变得更容易).以下是我发现的唯一一个给我预期结果的:
from answer in tpoll_answer where answer.poll_nbr = 16 _
group by a_id = answer.answer_nbr into votes = count(answer.user_nbr)
Run Code Online (Sandbox Code Playgroud)
这反过来会产生所有SQL查询中的丑陋和非优化:
SELECT [t1].[answer_nbr] AS [a_id], (
SELECT COUNT(*)
FROM (
SELECT CONVERT(Bit,[t2].[user_nbr]) AS [value], [t2].[answer_nbr], [t2].[poll_nbr] …Run Code Online (Sandbox Code Playgroud) 是不是有一种(简单)方法告诉Linq To SQL类特定的DateTime属性应该被视为UTC(即默认情况下将DateTime类型的Kind属性设置为Utc),或者是否存在"干净"的解决方法?
我的app-server上的时区与SQL 2005 Server不同(不能更改任何),没有一个是UTC.当我将类型为DateTime的属性保留为dB时,我使用UTC值(因此db列中的值为UTC),但是当我读回值时(使用Linq To SQL),我得到DateTime的.Kind属性值为'未指定'.
问题是,当我将它'转换为UTC时,它是4小时关闭.这也意味着当它被序列化时,它最终在客户端以4小时的错误偏移(因为它使用UTC序列化).
我正在检查第二版Professional ASP.NET MVC并实现了EF取代LINQ to SQL.我从第一本书中熟悉LINQ to SQL,但我对EF一无所知.无论如何,在阅读代码时,似乎没有任何改变,除了名称.相同的旧存储库类,相同的旧函数.
我做了一点研究.我知道LINQ不仅限于SQL.EF也不限于Microsoft系列SQL服务器.在这个2岁的问题中,人们对EF并不满意,并表示它过于复杂.但现在我在EF名下读相同的代码.只有使用LINQ to SQL的ADO.NET实体模型生成类.任何人都可以清除关于EF功能的大惊小怪,因为它现在是事实上的标准ORM吗?
我正在为应用程序编写数据访问层.访问层广泛使用linq类来返回数据.目前,为了将数据反映回数据库,我添加了一个私有数据上下文成员和一个公共保存方法.代码看起来像这样:
private DataContext myDb;
public static MyClass GetMyClassById(int id)
{
DataContext db = new DataContext();
MyClass result = (from item in db.MyClasss
where item.id == id
select item).Single();
result.myDb = db;
return result;
}
public void Save()
{
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
这是一个粗略的过度简化,但它给出了一般的想法.有没有更好的方法来处理这种模式?每次我想访问数据库时,我是否应该实例化新的数据上下文?
早在2008年底,就LINQ to SQL的未来发生了很多争论.许多人认为微软在.NET 4.0中对实体框架的投资是LINQ to SQL没有未来的标志.我想我会在做出自己的决定之前等待,因为人们不同意.
快进18个月,我有供应商提供依赖LINQ to SQL的解决方案,我个人试了一下,非常喜欢使用它.我想这是留下来的.
但是我正在读一本新书(Ben Watson的C#4.0 How-To)和第21章(LINQ),他认为它"或多或少被微软推荐"并建议使用LINQ to Entity Framework.
我的问题是LINQ to SQL是否正式被弃用和/或权威实体(Microsoft,Scott Gu等)是否正式建议使用LINQ to Entities而不是LINQ to SQL.
如何在LINQ TO SQL中使用union all.我使用以下代码进行联合,然后如何将此用于union all?
List<tbEmployee> lstTbEmployee = obj.tbEmployees.ToList();
List<tbEmployee2> lstTbEmployee2 = (from a in lstTbEmployee
select new tbEmployee2
{
eid = a.eid,
ename = a.ename,
age = a.age,
dept = a.dept,
doj = a.doj,
dor = a.dor
}).Union(obj.tbEmployee2s).ToList();
Run Code Online (Sandbox Code Playgroud) linq-to-sql ×10
linq ×8
c# ×6
.net ×2
.net-4.0 ×1
asynchronous ×1
datetime ×1
inner-join ×1
sql-server ×1
sqlite ×1
sum ×1
union ×1