我正在尝试将一些SQL查询转换为Linq,以避免多次访问数据库.
我正在尝试转换的旧SQL:
SELECT
AVG(CAST(DATEDIFF(ms, A.CreatedDate, B.CompletedDate) AS decimal(15,4))),
AVG(CAST(DATEDIFF(ms, B.CreatedDate, B.CompletedDate) AS decimal(15,4)))
FROM
dbo.A
INNER JOIN
dbo.B ON B.ParentId = A.Id
Run Code Online (Sandbox Code Playgroud)
所以我创建了两个C#类:
class B
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime CompletedDate { get; set; }
}
class A
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public List<B> BList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个List<A>我想查询的对象.它是从数据库填充的,因此列表中的每个A都有一个负载为Bs的子列表.我想使用Linq-to-objects来查询此列表.
所以我需要使用Linq来获得A开始和孩子Bs完成之间的平均时间,以及每个B开始和完成之间的平均时间.我没有写原始的SQL所以我不完全确定它做了它应该做的!
我有几个这些平均值要计算,所以我想在一个神奇的Linq查询中完成它们.这可能吗?
我知道使用"here"作为链接的文本被认为是错误的,但如果我想说服商业或建筑师类型的人,那么最好的论据是什么?我知道它可以对搜索引擎优化(SEO)产生一些影响,但任何人都可以更详细地解释这个和任何其他原因吗?
一个例子:
StackOverflow站点可以在这里找到 .
通常在Visual Studio中使用断点时(本例中为2008),我只看到一个平面列表.有时候,我会得到每个断点的树视图,如下所示(扩展节点有26个子节点).所有树节点都引用相同的代码行,并且所有可选列都为每个节点显示相同的数据.我猜他们可能与线程有关,但这些是什么用途,它们实际显示了什么?如果它们有一些用处,你应该如何区分它们?
我正在使用Ajax UpdateProgress控件.虽然它正如我预期的那样工作,但我希望它出现在页面的中心.我怎么做
<asp:UpdateProgress runat="server"
id="PageUpdateProgress" DisplayAfter=0
DynamicLayout=true>
<ProgressTemplate>
<div>
<img src="../Images/load.gif" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
Run Code Online (Sandbox Code Playgroud) HI!
我想基于鼠标位置创建一个平滑滚动条.我们的想法是创建一个固定宽度的外部div.内容非常宽,必须根据鼠标位置向左或向右滚动.如果内容是"无限的"或"无限的",那将是很棒的.内容是一个非常宽的图像,重复'seamelesly'.
任何人都可以通过在jQuery中创建它来帮助我吗?
Thanx提前!
亚历克斯
我有一个WCF服务操作,它接受一个字节数组作为其数据协定的一部分.该服务仅在内部公开(而不是互联网),我想增加配额以允许10MB字节数组.
该服务托管在IIS7中.当我尝试发送超过默认长度的字节数组时,我收到以下异常消息:
反序列化MyService.ServiceContracts.Data类型的对象时出错.读取XML数据时已超出最大数组长度配额(16384).通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxArrayLength属性,可以增加此配额.第1行,第22991位.
这是配置:
<system.serviceModel>
<netTcpBinding>
<binding name="largeBinaryBinding" maxReceivedMessageSize="10001000"
maxBufferPoolSize="80008000" maxBufferSize="10001000"
receiveTimeout="00:01:00" openTimeout="00:01:00"
closeTimeout="00:01:00" sendTimeout="00:01:00">
<readerQuotas maxArrayLength="10000000" />
</binding>
</netTcpBinding>
<services>
<service name="MyService">
<endpoint binding="netTcpBinding"
bindingConfiguration="largeBinaryBinding"
bindingNamespace="http://my.services.co.uk/MyService"
contract="Services.MyService.ServiceContracts.IMyService" />
</service>
</services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
所以我的配置允许更大的消息,但IIS似乎忽略了这一点 - 如何阻止这种情况并允许大量消息通过?
在Linq中,扩展方法如Where返回IEnumerable集合,但排序方法如OrderBy返回IOrderedEnumerable集合.
因此,如果您的查询以OrderBy(即返回一个IOrderedEnumerable)结束,则以后不能附加Where方法 - 编译器会抱怨传入的类型Where.
var query = Process.GetProcesses()
.Where(p => p.ProcessName.Length < 10)
.OrderBy(p => p.Id);
query = query.Where(p => p.ProcessName.Length < 5);
Run Code Online (Sandbox Code Playgroud)
但是,如果你在一个查询中完成所有操作,那很好!
var query = Process.GetProcesses()
.Where(p => p.ProcessName.Length < 10)
.OrderBy(p => p.Id)
.Where(p => p.ProcessName.Length < 5);
Run Code Online (Sandbox Code Playgroud)
我查看了Reflector中的程序集,看看编译器是否正在重新排序任何操作,但它似乎没有.这是如何运作的?
我正在尝试使用Reflection加载.NET程序集(使用该Assembly.LoadFrom方法),并在此程序集中实例化某些类型.
这一切似乎工作正常,但我试图实例化的一种类型访问其类型初始化程序中的程序集配置:它确实如此ConfigurationManager.GetSection(sectionName).然后程序集抛出异常,因为找不到配置节.
我正在加载的程序集的配置文件位于同一目录中,并且具有标准名称(即AssemblyName.dll.config),并且配置肯定具有所请求的部分.为什么找不到配置部分?加载程序集时还需要做些什么吗?
我的视图上有许多Html.Listbox控件,这些控件由一个人填充 IEnumberable<SelectListItem>
是否有一种方法可以在填充数据时自动选择某些项目?
IEnumerable中的特定选择列表项标记为Selected = true,但这不会传达到视图中.
观点是这样的:
<%= Html.ListBox("projects", Model.Projects)%>
Run Code Online (Sandbox Code Playgroud)
谢谢.
asp.net ×2
c# ×2
linq ×2
.net ×1
aggregates ×1
app-config ×1
asp.net-ajax ×1
asp.net-mvc ×1
average ×1
breakpoints ×1
hyperlink ×1
ienumerable ×1
iis-7 ×1
jquery ×1
mouse ×1
reflection ×1
scroll ×1
seo ×1
sql ×1
usability ×1
was ×1
wcf ×1