小编Jer*_*ins的帖子

返回IEnumerable时是否有理由不使用'yield return'?

简单的例子 - 你有一个返回IEnumerable的方法或属性,调用者在foreach()循环中迭代它.你应该总是在你的IEnumerable方法中使用'yield return'吗?有没有理由不去?虽然我明白它可能并不总是有必要,甚至"更好"(例如,它可能是一个非常小的集合),但有没有理由主动避免这样做?

让我思考这个问题的代码是我写的一个函数非常类似于这个帖子中接受的答案 - 我如何遍历日期范围?

c# ienumerable yield-return

22
推荐指数
3
解决办法
4895
查看次数

Umbraco 4.6+ - 如何通过C#中的doctype获取所有节点?

使用Umbraco 4.6+,有没有办法在C#中检索特定doctype的所有节点?我一直在寻找umbraco.NodeFactory命名空间,但还没有发现任何有用的东西.

c# api umbraco

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

为什么C#编译器没有捕获InvalidCastException

可能重复:
编译时和运行时转换c#

据我所知,以下代码将始终编译,并且还会在运行时始终通过抛出一个失败InvalidCastException.

例:


public class Post { }
public class Question : Post { }
public class Answer : Post 
{
    public void Fail()
    {
        Post p = new Post();
        Question q = (Question)p; // This will throw an InvalidCastException
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是......

  1. 如果我的假设是关闭的,那么有人可以举例说明他们是如何关闭的吗?
  2. 如果我的假设是正确的,那么编译器为什么不警告这个错误呢?

.net c# compiler-construction compilation exception

10
推荐指数
4
解决办法
1054
查看次数

C# - 装箱/拆箱/类型转换的问题.我不明白

我很难理解这一点.请考虑以下示例:

protected void Page_Load(object sender, EventArgs e)
{
    // No surprise that this works
    Int16 firstTest = Convert.ToInt16(0);
    int firstTest2 = (int)firstTest;

    // This also works
    object secondTest = 0;
    int secondTest2 = (int)secondTest;

    // But this fails!
    object thirdTest = Convert.ToInt16(0);
    int thirdtest2 = (int)thirdTest;  // It blows up on this line.
}
Run Code Online (Sandbox Code Playgroud)

我在运行时获得的具体错误是在Visual Studio中的Specified cast is not valid. If I QuickWatch (int)thirdTest,我得到的值为Cannot unbox 'thirdTest' as a 'int'.

到底发生了什么事?

c# boxing unboxing casting c#-4.0

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

有什么方法可以快速判断哪个数据库(如果有)附加到.mdf文件?

假设SQL Server 2005/2008具有大量数据库.有没有办法快速判断哪个数据库(如果有)附加到特定的.mdf文件?

我们已经删除了一些数据库,并希望清理一些挥之不去的.mdf来清理服务器上的空间.目前,我所知道的唯一方法是在Management Studio中逐个查看每个数据库的属性,并列出它们附加到的文件.寻找比这更有效的东西,如果有的话.

sql sql-server sql-server-2005 mdf sql-server-2008

7
推荐指数
2
解决办法
9584
查看次数

如何确定SQL Server 2000上使用的数据库

我有一个SQL Server 2000盒子,里面有几个数据库,其中一些可能已经不再使用了.我想首先将它们脱机,然后将它们全部一起删除.问题是我不知道如何分辨哪些仍然被积极使用(外部来源可能连接也可能不连接,使用它们等)

有没有办法告诉每个数据库上次活动的时间?我知道SQL Server会保留sys表中某些内容的记录,但我不确定那里存储的是什么.如果在那里找不到我需要的东西,那么我可以设置一些东西来跟踪这一点的用法吗?理想情况下,我希望能够"达到这个时间点",但"从这一点开始"将比没有好.谢谢.

sql sql-server sql-server-2000

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

与实例变量同名的局部变量=意外结果

ASP.NET 4.0 Webforms项目.我的代码隐藏中有以下内容.

public partial class _Default : System.Web.UI.Page
{
    private string testVar;

    protected override void OnInit(EventArgs e)
    {
        string testVar = "test";
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        var whatsTheValue = testVar;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在每个方法中设置一个断点.当局部变量testVar,被设置在OnInit,如果我快看实例变量,它也有值"测试".当我玩到时Page_Load,实例变量的值是null.

我偶然碰到了这个,但这种行为让我感到困惑.我真的很惊讶它编译.我本来希望看到有关两个变量具有相同名称的警告.话虽如此,对我来说更令人困惑的是,实例变量在OnInit中获取赋值,但是当退出该方法时立即丢失它.

有人可以向我解释这种行为吗?

c# instance-variables local-variables

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

是否可以阻止触发器在事务中运行?

根据一些资源,例如这个

在触发器上下文中执行的查询会自动包装在事务中。如果触发代码中有任何分布式查询,事务将自动提升为分布式事务。

简单的问题 - 有没有办法防止这种行为?我正在寻找一种方法来明确阻止触发器中的代码在事务上下文中运行。

sql sql-server sql-server-2008

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

MySql注释语法 - "#"和" - "之间的区别是什么

根据文档,有两种方法可以在MySql中对一行的末尾进行注释:

  • "#"
  • "-- "

这些之间有什么区别吗?

如果是这样,我应该何时使用其中一个?

如果没有,有谁知道为什么两者都支持?

对我来说似乎很奇怪,特别是当带连字符的版本与标准SQL语法略有不同时.

mysql sql syntax comments

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

使用反射从元数据类中获取属性属性

我有一个名为Project的LINQ生成类.

我想为生成的属性添加一些属性,因此我使用MetadataType属性定义了一个部分类.

[MetadataType(typeof(Project_HiddenProps))]
public partial class Project : IProject
{
    // There are also a few additional properties defined here.
}

public class Project_HiddenProps
{
    [HiddenColumn]
    public System.Guid Id { get; set; } 
    // Id is an auto-generated property that I've added a custom attribute to
}
Run Code Online (Sandbox Code Playgroud)

后来,我使用反射来尝试获取此属性的属性.

var customAttributes = prop.GetCustomAttributes(false);
Run Code Online (Sandbox Code Playgroud)

但是,我只获得了一个属性类型System.Data.Linq.Mapping.ColumnAttribute.我的HiddenColumn属性未包含在集合中.我的问题是如何使用反射获取这些元数据属性.

任何帮助将不胜感激.

c# asp.net reflection attributes .net-4.0

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

根据多个条件选择前n行

请原谅我可能是一个糟糕的头衔; 我努力用一行文字来解释我想要做的事情.

SQL Server 2005

我有一个名为ItemDataSheets的表,如下所示:

Id   ItemId    FilePath                FileDescription    FileType
------------------------------------------------------------------
1    JOD141    /files/JOD141_a.pdf     DataSheet ABC      1
2    JOD141    /files/JOD141_b.pdf     DataSheet LMN      1
3    JOD141    /files/JOD141_c.pdf     DataSheet XYZ      2
4    JOD141    /files/JOD141_d.pdf     DataSheet POI      3
5    JOD141    /files/JOD141_e.pdf     DataSheet QWE      3

对于给定的ItemId,我需要为它拥有的每个FileType返回1行.如果它有一个以上的某种文件类型,那么我需要该FileType具有最高Id的行.

所以对于ItemId JOD141,我想回来:

Id   ItemId    FilePath                FileDescription    FileType
------------------------------------------------------------------
2    JOD141    /files/JOD141_b.pdf     DataSheet LMN      1
3    JOD141    /files/JOD141_c.pdf     DataSheet XYZ      2
5    JOD141    /files/JOD141_e.pdf     DataSheet QWE      3

sql t-sql sql-server-2005

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

SQL:删除重复项

如何从以下列方式设置的表中删除重复项?

unique_ID | worker_ID | date | type_ID
Run Code Online (Sandbox Code Playgroud)

一个worker可以有多个与它们相关联的type_ID,我想删除任何重复的类型.如果有重复,我想删除具有最新条目的类型.

sql t-sql sql-server

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

SQL在一个查询中选择两个表

我的 mysql 数据库中有两个相互关联的表:users 和 user_info。users 表包含用户名、密码等,而我的 user_info 表包含用户的基本信息,如姓氏、名字等。我想知道如何在不使用两个 select 语句的情况下显示来自两个表的一行。

它是这样的:(我知道这不是正确的格式。抱歉)

SELECT * FROM users AND user_info WHERE users.user_id == user_info.user_id 
Run Code Online (Sandbox Code Playgroud)

mysql sql

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