小编Kit*_*124的帖子

Knockout + Bootstrap 3单选按钮

相关:Bootstrap单选按钮组

HTML:

<div class="btn-group" data-toggle="buttons">
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option1" value="1" data-bind="checked: optionsValue"> Option 1
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option2" value="2" data-bind="checked: optionsValue"> Option 2
    </label>
    <label class="btn btn-primary">
        <input type="radio" name="options" id="option3" value="3" data-bind="checked: optionsValue"> Option 3
    </label>
</div>
<br />
<span data-bind="text: optionsValue"></span>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var ViewModel = function() {
    this.optionsValue = ko.observable()
};

ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)

的jsfiddle:


我有上面的代码,我正试图按照我的预期工作.问题是当data-toggle="buttons"添加到btn-group div时(如在Bootstrap 3示例中),敲除绑定停止工作.如果我将数据切换关闭按钮组,则绑定按预期工作,但按钮组看起来很糟糕.我知道这在Bootstrap 2中不起作用,因为他们实际上没有使用无线电输入来进行无线电造型.它怎么会拒绝现在工作,即使他们这样做?

html javascript twitter-bootstrap knockout.js twitter-bootstrap-3

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

实体框架和多个模式

我正在尝试设置我的dbContext,以便它可以在单个Oracle数据库中处理多个模式.我不想要一个单片dbContext文件,所以我想出了以下内容:

public class oraDbContext : DbContext
{
    static oraDbContext() {
        Database.SetInitializer<oraDbContext>(null);
    }

    public oraDbContext(string connName)
        : base("Name=" + connName) { }

    public _schema1 schema1 = _schema1.Instance;
    public _schema2 schema2 = _schema2.Instance;

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        schema1.OnModelCreating(modelBuilder);
        schema2.OnModelCreating(modelBuilder);
    }
}
Run Code Online (Sandbox Code Playgroud)

模式文件如下所示:

public sealed class _schema1
{
    private static readonly _schema1 instance = new _schema1();

    static _schema1() { }
    private _schema1() { }

    public static _schema1 Instance {
        get {
            return instance;
        }
    }

    public DbSet<someTable> someTable { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# oracle entity-framework ef-code-first

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

为什么LINQ-to-Entities将此查询放在子选择中?

我有以下LINQ查询:

var queryGroups = (from p in db.cl_contact_event
                   select new Groups { inputFileName = p.input_file_name }).Distinct();
Run Code Online (Sandbox Code Playgroud)

运行时转换为以下内容:

SELECT 
[Distinct1].[C1] AS [C1], 
[Distinct1].[input_file_name] AS [input_file_name]
FROM ( SELECT DISTINCT 
       [Extent1].[input_file_name] AS [input_file_name], 
       1 AS [C1]
       FROM [mel].[cl_contact_event] AS [Extent1]
)  AS [Distinct1]
Run Code Online (Sandbox Code Playgroud)

现在我很确定有一个子选择的原因是因为我有()包围的基本LINQ查询,然后执行.Distinct()但我不太了解LINQ以确保这一点.如果确实如此,那么有一种方法可以重构/编码我的查询,以便不会发生子选择吗?

我知道这似乎我只是在这里挑选,但我只是好奇.

c# linq sybase linq-to-entities

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

如何在ASP.NET Razor表中编写汇总行?

我有一个在Razor视图中构建的表,如下所示:

@foreach (var item in Model)
{
    <tr>
        <td>@Html.DisplayFor(modelItem => item.column1)</td>
        ...
        ...
    </tr>
}
Run Code Online (Sandbox Code Playgroud)

我想在最后添加一个表的摘要,如:

<tr>
    <td>@Model.Sum(a => a.column1)</td>
    ...
    ...
</tr>
Run Code Online (Sandbox Code Playgroud)

这实际上有效但它不使用我的数据注释,因为我没有使用DisplayFor().我尝试将Model.Sum放在DisplayFor()中,但代码不起作用.有人能指出我的解决方案吗?

linq entity-framework razor asp.net-mvc-3

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

两个类似的LINQ查询,完全不同的生成SQL

我遇到了以下伪查询的问题:

var daily = from p in db.table1
            group p by new
            {
                key1,
                key2
            } into g
            join d in db.table2
            on new { p.key1, p.key2 } equals { d.key1, d.key2 }
            select new
            {
                col1 = g.Key.key1
                col2 = g.Sum(a => a.column2)
                col3 = d.column3
            };
Run Code Online (Sandbox Code Playgroud)

它运行但LINQ发送给SQL Server的生成的SQL语句是荒谬的.实际实现遵循与上面类似的设置,其中7个左右的列各自具有.Sum()计算.生成的SQL有大约10-11个嵌套的SELECT语句,没有INNER JOIN,当然,需要永远运行.

我测试了另一个查询实现:

var daily = from p in
                (from p in db.table1
                 group p by new
                 {
                     key1,
                     key2
                 } into g
                 select new
                 {
                     col1 = g.Key.key1, …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server entity-framework

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

LINQ 中的时区转换

我一直在谷歌搜索一段时间,试图找到某种解决方案,但运气不佳。

我正在尝试获取一组对应于一天数据的记录。一天的数据价值是 4:00:00EST-3:59:59EST。当我向用户显示我的结果集时,我希望以用户的本地时间(在我的情况下为 CST)显示结果。这通常不会那么难,除了:

  • 我数据库中的时间戳都是格林威治标准时间。
  • 数据库的本地时间是 EST。
  • 我的当地时间是 CST。

由于数据库的时间在 EST 但记录保存在 GMT 我不能简单地调用 GETDATE() 并调整它。

还值得注意的是,我在 C# 中使用 LINQ/Entity Framework 4.1 Code-First,我使用的数据库是 Sybase。

那么,鉴于上述信息,我将数据从 GMT 转换为用户的本地时间的可靠方法是什么?

c# sql linq entity-framework

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

这有什么神奇之处?

我最近发现臭名昭着的Jon Skeet关于使用LINQ to XML的帖子.这段特殊代码引起了我的注意:

// Customers is a List<Customer>
XElement customersElement = new XElement("customers",
    customers.Select(c => new XElement("customer", //This line is "magic"
        new XAttribute("name", c.Name),
        new XAttribute("lastSeen", c.LastOrder)
        new XElement("address",
            new XAttribute("town", c.Town),
            new XAttribute("firstline", c.Address1),
            // etc
    ));
Run Code Online (Sandbox Code Playgroud)

我决定在我的应用程序中自己测试它,我有一个foreach循环设置如下:

foreach (var kvp in m_jobs) {    //m_jobs is a Dictionary<string,Job>
    m_xmlDoc.Root.Element("SCHED_TABLE").Add(
        kvp.Value.GenerateXmlNode())
    );
}
Run Code Online (Sandbox Code Playgroud)

我修改为:

m_xmlDoc.Root.Element("SCHED_TABLE").Add(
    m_jobs.Select(job => job.Value.GenerateXmlNode())
};
Run Code Online (Sandbox Code Playgroud)

其中GenerateXmlNode()是为特定作业项生成适当XML标记的方法.我不确定会发生什么,但是它看起来和我的foreach循环完全一样.我不太明白的是为什么?!此外,这被认为是LINQ的"滥用"还是"功能"?

为清晰起见编辑:我知道.Select将返回一个IEnumerable,其中包含我要求的内容,但我并没有明确地枚举它.我理解.Add是如何工作的,因为它接受了可变数量的参数,但同样,我没有明确枚举传递这些参数.那么......它怎么还能用呢?

c# xml linq

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

LINQ(到Oracle) - Row_Number()Over Partition By

这可能是其他Partition By + Rank问题的重复,但我发现大多数问题/答案对于他们的特定业务逻辑过于具体.我正在寻找的是以下类型的查询的更一般的LINQ版本:

SELECT id,
       field1,
       field2,
       ROW_NUMBER() OVER (PARTITION BY id
                          ORDER BY field1 desc) ROWNUM
FROM someTable;
Run Code Online (Sandbox Code Playgroud)

我们对此做的一件非常普遍的事情就是把它包装成像这样的东西:

SELECT id,
       field1,
       field2
FROM (SELECT id,
      field1,
      field2,
      ROW_NUMBER() OVER (PARTITION BY id
                         ORDER BY field1 desc) ROWNUM
      FROM someTable)
WHERE ROWNUM = 1;
Run Code Online (Sandbox Code Playgroud)

这将返回每个id在field1中包含最高值的行.将顺序更改为asc当然会返回最低值或将等级更改为2将获得第二高/最低值等等.有没有办法编写可以执行服务器端的LINQ查询给我们同样的功能?理想情况下,如上所述的性能.

编辑: 我在搜索网页后尝试了很多不同的解决方案,他们最终都给了我同样的问题,以下是里德的回答,因为生成的SQL包括一个APPLY.

我尝试了几个例子:

from p in db.someTable
group p by p.id into g
let mostRecent = g.OrderByDescending(o => o.field1).FirstOrDefault()
select new {
    g.Key,
    mostRecent
};

db.someTable
    .GroupBy(g => g.id, (a, b) …
Run Code Online (Sandbox Code Playgroud)

linq sql-server oracle entity-framework

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

在现代x86-64上,为64位整数计算整数Log10的最快方法是什么?

标题; 我发现了很多32位示例,但没有完整的64位示例。以这篇文章为指导,我提出了以下实现,Log10但是我不确定翻译是否准确或有效。

编辑:据推测,此Clang示例处理后一种MAX_VALUE情况而没有最后两条指令,但是如果删除,我得到的结果为20,而不是预期的19。

...
mov rcx, 0FFFFFFFFFFFFFFFFh               ; put the integer to be tested into rcx

lea r10, qword ptr powersOfTen            ; put pointer to powersOfTen array into r10
lea r9, qword ptr maxDigits               ; put pointer to maxDigits array into r9
bsr rax, rcx                              ; put log2 of rcx into rax
cmovz rax, rcx                            ; if rcx is zero, put zero into rax
mov al, byte ptr [(r9 + rax)] …
Run Code Online (Sandbox Code Playgroud)

math optimization assembly x86-64 masm

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