小编pbz*_*pbz的帖子

LINQ - 左连接,分组依据和计数

假设我有这个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)

谢谢!

.net c# linq linq-to-sql

165
推荐指数
5
解决办法
19万
查看次数

使用Angular在全球范围内处理401s

在我的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)

angular

85
推荐指数
7
解决办法
5万
查看次数

ASP.NET Core 2.0身份验证中间件

随着Core 1.1遵循@ blowdart的建议并实施了自定义中间件:

/sf/answers/2202565921/

它的工作方式如下:

  1. 中间件运行了.从请求标头中选取一个令牌.
  2. 验证了令牌,如果有效,则构建一个包含多个声明的身份(ClaimsIdentity),然后通过HttpContext.User.AddIdentity()添加;
  3. 在使用services.AddAuthorization的ConfigureServices中,我添加了一个策略来要求中间件提供的声明.
  4. 在控制器/操作中,我将使用[授权(角色="中间件添加的某些角色")]

这有点适用于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中我做同样的事情的正确途径是什么?我没有看到做真正的自定义身份验证的示例.

c# authentication asp.net-core asp.net-core-2.0

84
推荐指数
2
解决办法
5万
查看次数

确定事件之外的鼠标位置(使用jQuery)?

我需要使用(最好)jQuery来保持绝对鼠标位置/坐标(X和Y),就像在本教程中一样,但在任何JavaScript事件之外.谢谢.

mouse jquery position event-handling

38
推荐指数
3
解决办法
5万
查看次数

ASP.NET Core在配置DI后初始化单例

所以,假设我有一个单例类实例,我在DI中注册如下:

services.AddSingleton<IFoo, Foo>();
Run Code Online (Sandbox Code Playgroud)

并且假设Foo该类具有许多其他依赖项(主要是允许其加载数据的存储库类).

根据我目前的理解,Foo实例在首次使用(询问)之前不会创建.有没有办法初始化除构造函数之外的这个类?就像ConfigureServices()完成后一样?或者初始化代码(从db加载数据)是否应该在Foo的构造函数中完成?

(如果这个类在第一次使用之前加载其数据以加速第一次访问,那将是很好的)

singleton dependency-injection asp.net-core

29
推荐指数
4
解决办法
2万
查看次数

ASP.NET MVC从数据库加载Razor视图

ScottGu提到我们应该能够从数据库加载一个Razor视图(查看评论部分),那么有没有人有一个如何做到这一点的例子?

谢谢.

asp.net-mvc razor

20
推荐指数
1
解决办法
2万
查看次数

使用Json.NET反序列化键值对的数组

鉴于以下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类听起来像它会做我需要的,但我无法找到如何使用它的例子.谢谢.

c# json.net deserialization

17
推荐指数
1
解决办法
3万
查看次数

包含多个索引的列表

给定一个通用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我提到"排序列表"的想法是排序列表将更快地返回/找到项目.我不需要列表必须排序; 我只是在寻找快速检索/发现.

.net c# indexing collections list

13
推荐指数
3
解决办法
1万
查看次数

Angular2子组件作为数据

假设我有两个组成部分:parentchild.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)

如何从父级中访问子组件并获取其内容?

此外,我不希望自动渲染孩子.根据某些条件,我可能会选择不显示某些孩子.

谢谢.

angular

12
推荐指数
1
解决办法
1万
查看次数

ASP.NET MVC通用基础视图类

我可以为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),则实际调用/使用/实例化该类.

那么,我做错了什么或这是一个限制/错误?谢谢.

asp.net asp.net-mvc views

10
推荐指数
1
解决办法
6057
查看次数