小编Oce*_*t20的帖子

AsQueryable()的目的是什么?

是的目的AsQueryable()只是让你可以围绕传递IEnumerable到所期望的方法IQueryable,或者是有一个有用的理由表示IEnumerableIQueryable?例如,它应该是这样的情况:

IEnumerable<Order> orders = orderRepo.GetAll();

// I don't want to create another method that works on IEnumerable,
// so I convert it here.
CountOrders(orders.AsQueryable());

public static int CountOrders(IQueryable<Order> ordersQuery)
{
    return ordersQuery.Count();
}
Run Code Online (Sandbox Code Playgroud)

或者它实际上是否使它做了不同的事情:

IEnumerable<Order> orders = orderRepo.GetAll();
IQueryable<Order> ordersQuery = orders.AsQueryable();

IEnumerable<Order> filteredOrders = orders.Where(o => o.CustomerId == 3);
IQueryable<Order> filteredOrdersQuery = ordersQuery.Where(o => o.CustomerId == 3);

// Are these executed in a different way?
int result1 = filteredOrders.Count(); …
Run Code Online (Sandbox Code Playgroud)

.net c# linq ienumerable iqueryable

94
推荐指数
4
解决办法
7万
查看次数

我误解了LINQ to SQL .AsEnumerable()?

考虑以下代码:

var query = db.Table
              .Where(t => SomeCondition(t))
              .AsEnumerable();

int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
Run Code Online (Sandbox Code Playgroud)

假设query需要很长时间才能运行.我需要获得记录数,总数SomeNumber已经返回,并在结束时取平均值.我以为根据我读的是.AsEnumerable()将执行使用LINQ到SQL,然后使用LINQ到对象的查询Count,Sum以及Average.相反,当我在LINQPad中执行此操作时,我看到相同的查询运行三次.如果我更换.AsEnumerable().ToList(),它只被查询一次.

我错过了什么AsEnumerable/做什么?

.net c# linq linq-to-sql

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

如何解决IReadOnlyDictionary缺乏协方差?

我正在尝试公开一个只读字典,该字典保存带有只读接口的对象.在内部,字典是可写的,其中的对象也是可写的(参见下面的示例代码).我的问题是,由于此处问题中概述的原因,IReadOnlyDictionary不支持协变转换.这意味着我不能只将我的内部字典公开为只读字典.

所以我的问题是,有没有一种有效的方法将我的内部字典转换为IReadOnlyDictionary,或者其他一些方法来处理它?我能想到的选择是:

  1. 保留两个内部词典并使它们保持同步.
  2. 访问属性并在其中转换所有对象时创建新字典.
  3. 在内部使用时,将IReadOnly转回NotReadOnly.

1看起来像是一种痛苦,2似乎非常低效.3听起来像目前最有希望,但仍然是丑陋的.我还有其他选择吗?

public class ExposesReadOnly
{
    private Dictionary<int, NotReadOnly> InternalDict { get; set; }
    public IReadOnlyDictionary<int, IReadOnly> PublicList
    {
        get
        {
            // This doesn't work...
            return this.InternalDict;
        }
    }

    // This class can be modified internally, but I don't want
    // to expose this functionality.
    private class NotReadOnly : IReadOnly
    {
        public string Name { get; set; }
    }
}

public interface IReadOnly
{
    string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)

.net c# dictionary readonly covariance

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

Intellisense/Autoformat的SQL Management Studio插件?

SQL Management Studio是否有免费或廉价的插件/附件提供智能感知和(不太重要)一些自动格式化?我最近尝试过Redgate的产品,并且非常喜欢这些功能,但我想知道是否有其他选择.

sql intellisense plugins ssms add-on

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

SQL脚本查找特定表的外键?

是否有一个查询可以获取针对特定表列的外键?例如,假设我有这三个表:

__________
|Table A |
----------
|Id      |
----------

___________
|Table B  |
-----------
|Id       |
|TableAId | (Foreign Key to TableA.Id)
-----------

___________
|Table C  |
-----------
|Id       |
|TableAId | (Foreign Key to TableA.Id)
-----------
Run Code Online (Sandbox Code Playgroud)

我需要一个查询"Select*外键指向TableA.Id",返回"表C:TableAId","表B:TableAId".我正在浏览一些INFORMATION_SCHEMA系统视图,看起来我可以很容易地看到外键分别属于表A或表B,但我找不到它所说的"表C有一个外键到表A"具体而言.我可以弄清楚查询的细节,我只是找不到我正在寻找的视图(或者我正在掩饰它们).任何帮助,将不胜感激.

sql constraints foreign-keys sql-server-2008

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

用于元素类型和类名的Jquery选择器?

我有一个我们称之为的元素selectedTable包含innerHtml:

<TBODY>
    <TR>
        <TD></TD>
        <TD></TD>
        <TD class='ms-cal-nav-buttonsltr'></TD>
    </TR>
</TBODY>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用JQuery选择器返回<TD>带有"ms-cal-nav-buttonsltr"类的标记.我发现$(selectedTable).find("TD")按预期返回表中的所有TD标签,但我想知道如何将TD元素选择器与类选择器结合起来.我试着$(subnode).find("TD").find(".ms-cal-nav-buttonsltr")$(subnode).find("TD .ms-cal-nav-buttonsltr")无济于事的,但这些在黑暗中拍摄只.实现这一目标的最有效方法是什么?提前致谢.

javascript jquery css-selectors jquery-selectors

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

谓词作为参数的方法

这是一个普遍的问题,但这是我正在寻找解决方案的具体案例:

我有一个Dictionary<int, List<string>>我想应用各种谓词.我想要一个可以处理多个LINQ查询的方法,例如:

from x in Dictionary
where x.Value.Contains("Test")
select x.Key

from x in Dictionary
where x.Value.Contains("Test2")
select x.Key
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找一个像这样的方法:

public int GetResult(**WhatGoesHere** filter)
{
    return from x in Dictionary.Where(filter)
           select x.Key;
}
Run Code Online (Sandbox Code Playgroud)

要像这样使用:

int result;

result = GetResult(x => x.Value.Contains("Test"));
result = GetResult(x => x.Value.Contains("Test2"));
Run Code Online (Sandbox Code Playgroud)

WhatGoesHere的正确语法是什么

.net c# linq linq-to-objects predicate

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

Actionscript日期比较

在我的Actionscript代码中,我有两个日期:

var date1:Date = new Date(2011,1,1);
var date2:Date = new Date(2011,1,1);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

var equal:Boolean = date1 == date2;
Run Code Online (Sandbox Code Playgroud)

从阅读中我发现这是一个可行的替代方案,因为它只是从标准时间点获得毫秒数.

var equal:Boolean = date1.getTime() == date2.getTime();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 为什么普通的等式运算符不能在动作脚本中使用日期?
  2. ">"以及"<"运算符似乎工作正常,但它们可以被信任吗?
  3. 他们为什么会工作而不是平等运算符?
  4. 在比较只返回-1,0或1的日期时,我是否可以使用标准方法(我意识到我可以轻松创建自己的,但我宁愿使用现有的实用程序类)?

提前致谢.

actionscript equality date operators

8
推荐指数
2
解决办法
5484
查看次数

SQLMetal Multiple Foreign Keys Pointing to One Table Issue

Edit - Cleaning up question to better reflect the actual issue:

我正在使用SQLMetal从我们的SQL Server数据库生成数据库类.最近,我需要添加一个表,其中有多个外键指向同一个表.使用LINQPad来使用新表,我能够访问两个外键的属性,如下所示:

  • record.FK_AId
  • record.FK_BId
  • record.FKA
  • record.FKB

......这就是我期待它的方式.问题是,SQLMetal生成的类产生以下属性:

  • record.FK_AId
  • record.FK_BId
  • record.FKA
  • record.FKBTableNameGoesHere

现在我可以只生成生成的类,因此FKBTableNameGoesHere将是FK_B,但生成的文件经常被不同的团队成员更改,因此这将是一个巨大的痛苦.这有一个简单的解决方案吗?

提前致谢.

编辑2 所以,我认为解决方案是创建一个具有名为我想要的属性的部分类,并让getter/setter指向命名不佳的属性.这有助于选择,但不能在where子句中使用它.任何人都有解决方案?

sqlmetal .net-4.0 linq-to-sql

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

将Vector.<SomeType>转换为Array?

不幸的是,在Actionscript中,似乎对Vector类的支持尚不完全.在某些情况下,我需要将Vector转换为数组(例如,创建一个ArrayCollection).我认为这样可以解决问题:

var myVector:Vector.<MyType> = new Vector.<MyType>();

var newArray:Array = new Array(myVector);
Run Code Online (Sandbox Code Playgroud)

显然,这只是创建一个数组,其中数组的第一个索引包含完整的Vector对象.这是我唯一的选择:

var newArray:Array = new Array(myVector);

for each(var item:MyType in myVector)
{
    newArray.push(item); 
}
Run Code Online (Sandbox Code Playgroud)

我觉得这会使代码混乱很多,我需要在很多地方做到这一点.Vector类没有实现任何类型的接口,所以据我所知,我不能创建一个通用函数来转换为数组.有没有办法这样做,而不是每次我想将Vector转换为数组时都添加这个混乱?

apache-flex arrays actionscript vector arraycollection

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