小编Sve*_*sen的帖子

一对多关系不存在的地方

我很难弄清楚如何提出这个问题,所以我将直接进入示例代码。假设我有这些表:

create table Item
(
    ItemId int identity(1,1),
    Name nvarchar(256)
)

create table ItemSale
(
    ItemSaleId int identity(1,1),
    ItemId int,
    Price decimal,
    CategoryId tinyint
)
Run Code Online (Sandbox Code Playgroud)

我想要检索的是ItemSale不在给定CategoryId. 至少对我来说,复杂的是,如果ItemSale给定的记录存在Item,我不想看到任何记录Item

所以如果我有这个数据:

insert into Item(Name)
select N'Widget' union all
select N'Foo' union all 
select N'Buzz'

insert into ItemSale(ItemId, Price, CategoryId)
select 1, 9.95, 1  union all
select 1, 19.95, 2 union all
select 3, 99.99, 3
Run Code Online (Sandbox Code Playgroud)

CategoryId我要过滤掉的是 1,那么我不想看到ItemId1(“小部件”)的任何记录。因此,使用该示例数据,我只会看到ID 为 3的 …

sql t-sql sql-server sql-server-2008-r2

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

块IEnumerable/ICollection类C#2.0

我正在尝试在C#2.0中实现IEnumerable(和ICollection)的自定义集合类中对项目进行分块.比方说,例如,我一次只需要1000个项目,而我的收藏中有3005个项目.我有一个工作解决方案,我在下面演示,但它似乎很原始,我认为必须有一个更好的方法来做到这一点.

这就是我所拥有的(例如,我使用的是C#3.0的Enumerable和var,只需在您的脑海中用自定义类替换这些引用):

var items = Enumerable.Range(0, 3005).ToList();
int count = items.Count();
int currentCount = 0, limit = 0, iteration = 1;

List<int> temp = new List<int>();

while (currentCount < count)
{
    limit = count - currentCount;

    if (limit > 1000)
    {
        limit = 1000 * iteration;
    }
    else
    {
        limit += 1000 * (iteration - 1);
    }
    for (int i = currentCount; i < limit; i++)
    {
        temp.Add(items[i]);
    }

    //do something with temp

    currentCount += temp.Count;
    iteration++;
    temp.Clear();
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以在C#2.0中建议更优雅的方式吗?我知道这个项目是否是过去5年我可以使用Linq(如此 …

c# collections c#-2.0

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

jQuery POST 到 Node.JS 失败

我正在尝试通过熟悉 node.js(我的职业是 .NET 开发人员)来扩大我的视野,但我对我认为是一个简单的 POST 示例的问题感到困惑。我确实有使用 jQuery 的经验,所以在我正在构建的这个示例网站中,node.js 对我来说是相对未知的。

node.JS 服务器代码:

var express = require('express');
var app = express();

app.configure(function() {
    app.use(express.bodyParser());
    app.use(app.router);
    app.use(express.logger());
});

app.use(express.static(__dirname + '/public/PRB_Presentation'));

app.post('/GetPage', function(request, response){
    console.log(request.body.pageNumber);
    response.send(request.body.pageNumber);
});

var port = 80;
app.listen(port);
console.log('Listening on port: ' + port);
Run Code Online (Sandbox Code Playgroud)

我的客户端 jQuery 逻辑:

function getPage(pageNumber){
        $.ajax({
            url: '/GetPage',
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: JSON.stringify({ pageNumber: pageNumber })
        }).done(function(data, textStatus, jqXHR) {
            console.log("Success: " + data);
        }).fail(function(jqXHR, textStatus, errorThrown) {
            console.log("Error: " + …
Run Code Online (Sandbox Code Playgroud)

javascript jquery node.js

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

任务结果评估的时间安排

这是一个"学术"问题,而不是影响我目前正在以官方身份工作的任何问题,但我想这里有人可以向我解释这个问题.

我与玩弄CancellationTokenLinqPAD(我提到这个细节让人们不熟悉它知道,Dump()基本上是短手Console.WriteLine()),我是想了这样一个场景,我有主线程睡眠,而我的任务完成.这是在运行几个取消任务的变体之后完成的,然后才能完成与IsCanceled属性一起玩并验证Result在取消时无法访问该属性.这是我的虚拟LinqPAD程序的样子:

void Main()
{
    var cts = new CancellationTokenSource();
    var task = Task.Factory.StartNew(() => Test())
                            .ContinueWith(t => t.Result, cts.Token)
                            .ContinueWith(t => 
                            { 
                                if (t.IsCanceled)
                                {
                                    "Cancelled".Dump();
                                }
                                else if (t.IsCompleted)
                                {
                                    "Completed".Dump();
                                    t.Result.Sum (r => r).Dump();
                                }
                            }); 
    //sleep long enough to make sure the Task completes
    Thread.Sleep(6000);
}

private IEnumerable<int> Test()
{
    foreach(var i in Enumerable.Range(0, 10))
    {
        yield return i;
        Task.Delay(500).Wait();
    }
}
Run Code Online (Sandbox Code Playgroud)

这种行为 - …

.net multithreading task-parallel-library c#-5.0

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

使用CSS将标签水平对齐

我有一个很想解决的问题,可以通过使用CSS来解决,而不必诉诸于静态调整标签大小(但可能无法实现)。

我每行有两个标签,一个用于显示“标题”,另一个用于显示关联的“值”。这是我想要的样子:

在此处输入图片说明

这类似于在输入旁边对齐表格中的标签,但是我希望每行的第二个元素左对齐,而不是第一个元素右对齐。我尝试修改该问题的可接受答案,并设置“标题”标签的宽度,但这对我的输出没有影响。如前所述,无论如何我都不希望对宽度进行硬编码,但我希望在尝试找到可以解决较大“ title”值的良好的长期解决方案之前取得一些成果。

这是我当前的CSS(类应该是不言自明的):

.propertyTitle {
    text-transform: uppercase;
    width: 300px;/*Why doesn't this have any effect?*/
}
.propertyValue {
    text-align: left;
}
Run Code Online (Sandbox Code Playgroud)

而我目前的HTML:

<div>
    <div>
        <label class="propertyTitle">Hello:</label>
        <label class="propertyValue">World</label>
    </div>
    <div>
        <label class="propertyTitle">Goodbye:</label>
        <label class="propertyValue">To All of the People in the World</label>
    </div>
    <div>
        <label class="propertyTitle">I Want:</label>
        <label class="propertyValue">These labels to line up</label>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果可以简化HTML,也可以对其进行修改。为了遵循最佳实践,我宁愿不使用表格来完成这项工作。

这是一个jsFiddle,显示了我现在所拥有的,我想念的是什么?理想情况下,此解决方案适用于IE8 +和Firefox,因此不幸的是不鼓励使用HTML5和CSS3元素。

编辑
要重申后两个答案(都解决了我的问题),有没有一种方法,而无需为我的“标题”标签硬编码宽度?

html css

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