假设我有这个SQL:
SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
Run Code Online (Sandbox Code Playgroud)
如何将其转换为LINQ to SQL?我被困在COUNT(c.ChildId),生成的SQL似乎总是输出COUNT(*).这是我到目前为止所得到的:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count() }
Run Code Online (Sandbox Code Playgroud)
谢谢!
在我的Angular 2项目中,我从返回Observable的服务进行API调用.然后调用代码订阅此可观察对象.例如:
getCampaigns(): Observable<Campaign[]> {
return this.http.get('/campaigns').map(res => res.json());
}
Run Code Online (Sandbox Code Playgroud)
假设服务器返回401.如何全局捕获此错误并重定向到登录页面/组件?
谢谢.
这是我到目前为止所拥有的:
// boot.ts
import {Http, XHRBackend, RequestOptions} from 'angular2/http';
import {CustomHttp} from './customhttp';
bootstrap(AppComponent, [HTTP_PROVIDERS, ROUTER_PROVIDERS,
new Provider(Http, {
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions),
deps: [XHRBackend, RequestOptions]
})
]);
Run Code Online (Sandbox Code Playgroud)
// customhttp.ts
import {Http, ConnectionBackend, Request, RequestOptions, RequestOptionsArgs, Response} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class CustomHttp extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
super(backend, defaultOptions);
}
request(url: string | Request, options?: …Run Code Online (Sandbox Code Playgroud) 随着Core 1.1遵循@ blowdart的建议并实施了自定义中间件:
它的工作方式如下:
这有点适用于2.0,除了如果令牌无效(上面的步骤2)并且从未添加声明我得到"没有指定authenticationScheme,并且没有找到DefaultChallengeScheme."
所以现在我正在读取2.0中的auth更改:
https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x
在ASP.NET Core 2.0中我做同样的事情的正确途径是什么?我没有看到做真正的自定义身份验证的示例.
我需要使用(最好)jQuery来保持绝对鼠标位置/坐标(X和Y),就像在本教程中一样,但在任何JavaScript事件之外.谢谢.
所以,假设我有一个单例类实例,我在DI中注册如下:
services.AddSingleton<IFoo, Foo>();
Run Code Online (Sandbox Code Playgroud)
并且假设Foo该类具有许多其他依赖项(主要是允许其加载数据的存储库类).
根据我目前的理解,Foo实例在首次使用(询问)之前不会创建.有没有办法初始化除构造函数之外的这个类?就像ConfigureServices()完成后一样?或者初始化代码(从db加载数据)是否应该在Foo的构造函数中完成?
(如果这个类在第一次使用之前加载其数据以加速第一次访问,那将是很好的)
ScottGu提到我们应该能够从数据库加载一个Razor视图(查看评论部分),那么有没有人有一个如何做到这一点的例子?
谢谢.
鉴于以下json:
[ {"id":"123", ... "data":[{"key1":"val1"}, {"key2":"val2"}], ...}, ... ]
Run Code Online (Sandbox Code Playgroud)
这是一个更大的树的一部分,我如何将"数据"属性反序列化为:
List<MyCustomClass> Data { get; set; }
Run Code Online (Sandbox Code Playgroud)
要么
List<KeyValuePair> Data { get; set; }
Run Code Online (Sandbox Code Playgroud)
要么
Dictionary<string, string> Data { get; set; }
Run Code Online (Sandbox Code Playgroud)
使用Json.NET?两个版本都可以(我更喜欢List of MyCustomClass).我已经有一个包含其他属性的类,如下所示:
public class SomeData
{
[JsonProperty("_id")]
public string Id { get; set; }
...
public List<MyCustomClass> Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
其中"MyCustomClass"只包含两个属性(Key和Value).我注意到有一个KeyValuePairConverter类听起来像它会做我需要的,但我无法找到如何使用它的例子.谢谢.
给定一个通用List我需要某种索引(在数据库意义上),这将允许我快速检索.这个索引的键不是唯一的,所以我不能使用字典.这就是我的想法:给定一个类Foo {P1,P2,P3}可能有这样的数据
{ "aaa", 111, "yes" }
{ "aaa", 112, "no" }
{ "bbb", 111, "no" }
{ "bbb", 220, "yes" }
{ "bbb", 220, "no" }
{ "ccc", 300, "yes" }
Run Code Online (Sandbox Code Playgroud)
我需要快速访问P1为"bbb"(第3,第4和第5)的所有记录或P2为111(第1和第3)的所有记录.我可以使用排序列表,但如果我需要多种排序/索引方法,我最终会得到重复列表.
.NET框架中是否有内置的东西,或者可能是OS库,它会做这样的事情?谢谢.
PS我提到"排序列表"的想法是排序列表将更快地返回/找到项目.我不需要列表必须排序; 我只是在寻找快速检索/发现.
假设我有两个组成部分:parent和child.HTML将如下所示:
<parent title="Welcome">
<child name="Chris">Blue Team</child>
<child name="Tom">Red Team</child>
</parent>
Run Code Online (Sandbox Code Playgroud)
最终输出如下:
<h1>Welcome</h2>
<ul>
<li><b>Chris</b> is on the Blue Team</li>
<li><b>Tom</b> is on the Red Team</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
父组件:
@Component({
selector: 'parent',
directives: [ChildComponent], // needed?
template: `
<h1>{{title}}</h1>
<ul>
<li *ngFor="#child of children()">{{child.content}}<li>
</ul>`
})
export class ParentComponent {
@Input() title;
children() {
// how?
}
}
Run Code Online (Sandbox Code Playgroud)
如何从父级中访问子组件并获取其内容?
此外,我不希望自动渲染孩子.根据某些条件,我可能会选择不显示某些孩子.
谢谢.
我可以为MVC项目中的视图创建一个基类,如下所示:
public class BaseViewPage : System.Web.Mvc.ViewPage
{
public string Something { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在ASPX中我可以这样做:
<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %>
Run Code Online (Sandbox Code Playgroud)
这很好用; 问题是当我尝试使用通用版本时:
public class BaseViewPage<TModel> :
System.Web.Mvc.ViewPage<TModel> where TModel : class
{
public string Something { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从ASPX使用它时,像这样:
<%@ Page Something="foo" Language="C#"
Inherits="MyNamespace.BaseViewPage<SomeClass>" %>
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
解析属性'something'时出错:类型'System.Web.Mvc.ViewPage'没有名为'something'的公共属性.
注意它是如何尝试使用System.Web.Mvc.ViewPage而不是我的BaseViewPage类.为了使它更有趣,如果我从Page指令中删除"Something"属性并将一些代码放在BaseViewPage的通用版本中(例如OnInit),则实际调用/使用/实例化该类.
那么,我做错了什么或这是一个限制/错误?谢谢.
c# ×4
.net ×2
angular ×2
asp.net-core ×2
asp.net-mvc ×2
asp.net ×1
collections ×1
indexing ×1
jquery ×1
json.net ×1
linq ×1
linq-to-sql ×1
list ×1
mouse ×1
position ×1
razor ×1
singleton ×1
views ×1