小编mez*_*oid的帖子

如何解释数据库中数字的精度和比例?

我在数据库中指定了以下列:decimal(5,2)

怎么解释这个?

根据SQL Server Management Studio中查看的列上的属性,我可以看到它表示:十进制(数字精度,数字刻度).

精确度和规模在实际意义上是什么意思?

很容易将其解释为带有5位数和2位小数位的十进制数...即12345.12

PS我已经能够从同事那里确定正确的答案,但很难在网上找到答案.因此,我想在stackoverflow上记录问题和答案,以备将来参考.

sql database precision decimal scale

224
推荐指数
3
解决办法
26万
查看次数

如何使用Linq从对象列表中获取唯一的属性列表?

我正在尝试使用Linq返回一个id列表,给出id为属性的对象列表.我希望能够在不循环遍历每个对象并拉出我找到的唯一ID的情况下执行此操作.

我有一个MyClass类型的对象列表,这个类的一个属性是一个ID.

public class MyClass
{
  public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是写一个Linq查询来返回我的那些ID列表

IList<MyClass>如果它返回一个IEnumerable<int>id ,我该怎么做呢?

我确信必须能够使用Linq在一行或两行中完成它,而不是循环遍历MyClass列表中的每个项目并将唯一值添加到列表中.

任何帮助创建一个优雅的解决方案将非常感谢!

linq properties class list c#-3.0

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

编码Katas实践遗留代码的重构

最近几个月我对编码katas很感兴趣.我相信它们是磨练我的编程技巧和提高我在工作中编写的代码质量的好方法.

Katas可以在很多地方找到.喜欢..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

我发现这些是Katas的优秀资料库......我对其中一些人的尝试得到了极大的回报.

但是,我觉得到目前为止我见过的所有卡塔都有一个短暂的来临.他们似乎都不允许我练习重构坏代码.第一次学习如何编写干净的代码真是太棒了...但在我目前的工作中,我没有太多机会编写新代码.相反,我经常与遗留代码作斗争并试图弄清楚如何重构模块,消除依赖关系并减少耦合.

因此,我正在寻找一些可以用来磨练我重构遗留代码并将其转换为干净代码的技能的Katas.

有谁知道任何已存在的?我知道我在工作的时候会接受很多练习...但是我想磨练自己的技能,以便能够快速地看到如何分离依赖关系,并在课堂上分离关注点做得太多了.

refactoring legacy-code

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

TransactionScope如何回滚交易?

我正在编写一个集成测试,我将把一些对象插入数据库,然后检查以确定我的方法是否检索这些对象.

我与数据库的连接是通过NHibernate ...而我创建这样一个测试的常用方法是执行以下操作:

NHibernateSession.BeginTransaction();

//use nhibernate to insert objects into database
//retrieve objects via my method
//verify actual objects returned are the same as those inserted

NHibernateSession.RollbackTransaction();
Run Code Online (Sandbox Code Playgroud)

但是,我最近发现了TransactionScope,它显然可以用于这个目的......

我发现的一些示例代码如下:

public static int AddDepartmentWithEmployees(Department dept)
{

    int res = 0;

    DepartmentAdapter deptAdapter = new DepartmentAdapter();
    EmployeeAdapter empAdapter = new EmployeeAdapter();
    using (TransactionScope txScope = new TransactionScope())
    {

        res += deptAdapter.Insert(dept.DepartmentName);
        //Custom method made to return Department ID 
        //after inserting the department "Identity Column"
        dept.DepartmentID = deptAdapter.GetInsertReturnValue(); …
Run Code Online (Sandbox Code Playgroud)

.net c# nhibernate transactions transactionscope

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

在C#中使用XmlReader读取Xml

我正在尝试尽可能快地阅读以下Xml文档,并让其他类管理每个子块的读取.

<ApplicationPool>
    <Accounts>
        <Account>
            <NameOfKin></NameOfKin>
            <StatementsAvailable>
                <Statement></Statement>
            </StatementsAvailable>
        </Account>
    </Accounts>
</ApplicationPool>
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试使用XmlReader对象来读取每个帐户,然后使用"StatementsAvailable".你建议使用XmlReader.Read并检查每个元素并处理它吗?

我想过分离我的类来正确处理每个节点.所以这是一个AccountBase类,它接受一个XmlReader实例,该实例读取NameOfKin和该帐户的其他几个属性.然后我想要通过语句进行交互,让另一个类填写有关语句(并随后将其添加到IList).

到目前为止,我通过执行XmlReader.ReadElementString()来完成"每个类"部分,但是我无法训练如何告诉指针移动到StatementsAvailable元素并让我遍历它们并让另一个类读取每个proeprties .

听起来很简单!

c# xml xmlreader

90
推荐指数
5
解决办法
32万
查看次数

linq的let关键字比关键字更好吗?

我正在刷新LINQ,并试图理解let和使用into关键字之间的区别.到目前为止,就我的理解而言,let关键字似乎比关键字更好into.

into关键字实质上允许在投影后继续查询.(只是想明确说明我不是指组连接的那个.)

给定一系列名称,它允许人们执行以下操作:

var intoQuery =
  from n in names
  select Regex.Replace(n, "[aeiou]", "")
  into noVowel
  where noVowel.Length > 2
  select noVowel;
Run Code Online (Sandbox Code Playgroud)

它需要选择的结果,并将其放置到noVowel变量,然后允许一个引入额外的where,orderbyselect条款.一旦noVowel变量被创建,该n变量不再可用.

let关键字,而另一方面,使用温度匿名类型,让你在同一时间重复使用一个以上的变量.

您可以执行以下操作:

var letQuery =
  from n in names
  let noVowel = Regex.Replace(n, "[aeiou]", "")
  where noVowel.Length > 2
  select noVowel;
Run Code Online (Sandbox Code Playgroud)

这两个noVoweln变量都可以使用(即使我在这种情况下没有使用它).

虽然我可以看到差异,但我不太明白为什么人们会想要在into关键字上使用let关键字,除非明确要确保以前的变量不能在查询的后半部分使用.

那么,两个关键词存在的原因是否存在?

c# linq

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

如果发生错误,using语句是否会回滚数据库事务?

我在using语句中有一个IDbTransaction,但我不确定如果在using语句中抛出异常,它是否会被回滚.我知道using语句会强制调用Dispose()......但是有人知道Rollback()是否也是如此?

更新:此外,我是否需要显式调用Commit(),如下所示,还是由using语句处理吗?

我的代码看起来像这样:

using Microsoft.Practices.EnterpriseLibrary.Data;

...

using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
    connection.Open();

    using(IDbTransaction transaction = connection.BeginTransaction())
    {
       //Attempt to do stuff in the database
       //potentially throw an exception
       transaction.Commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# transactions using-statement rollback

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

为什么我不能将int取消装入十进制?

我有一个IDataRecord reader我正在检索小数,如下所示:

decimal d = (decimal)reader[0];
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这会抛出一个无效的强制转换异常,说"指定的强制转换无效".

当我这样做reader[0].GetType()时告诉我它是Int32.据我所知,这应该不是问题....

我已经通过这个片段测试了这个,它运行得很好.

int i = 3750;
decimal d = (decimal)i;
Run Code Online (Sandbox Code Playgroud)

这让我头疼不已,想知道为什么它没有将读取器中包含的int取消装箱作为小数.

有谁知道为什么会这样?有什么微妙的我不见了吗?

c# int unboxing decimal

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

如何将Dictionary <TKey,TValue>的所有值作为IList <TValue>?

我有以下字典:

IDictionary<int, IList<MyClass>> myDictionary 
Run Code Online (Sandbox Code Playgroud)

我希望将字典中的所有值都作为IList获取....


只是添加一些背景知道我是如何进入这种情况的....

我有一个方法,让我得到一个MyClass列表.然后我有另一种方法将该列表转换为字典,其中key是MyClass的id.稍后......并且无法访问原始列表......我需要获取原始的未分组的MyClass列表.


当我将myDictionary.Values.ToList()传递给一个接受IList的方法时,我得到一个编译错误,说它无法转换

System.Collections.Generic.List<System.Collections.Generic.IList<MyClass>> 
Run Code Online (Sandbox Code Playgroud)

至:

System.Collections.Generic.IList<MyClass>
Run Code Online (Sandbox Code Playgroud)

现在,我可以理解它已经消失并将每个IList组添加到新列表中作为列表的单独元素....但在这种情况下它并不是我真正想要的.我只想要整个字典中所有值的列表.

那么如何在不循环遍历字典中的每个键值并创建我想要的列表的情况下如何获得我所追求的内容?

c# dictionary ilist .net-3.5

42
推荐指数
3
解决办法
8万
查看次数

什么时候应该使用Environment.Exit来终止控制台应用程序?

我在工作中维护了许多控制台应用程序,我在其中一些人注意到的一件事是他们调用了Environment.Exit(0).

示例程序如下所示:

public class Program
{
    public static void Main(string[] args)
    {
        DoStuff();
        Environment.Exit(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白原始程序员的意图是什么?在我看来,即使没有Environment.Exit语句,程序应该退出就好了.也就是说,对于其中一个程序,它的控制台窗口即使在应该关闭之后仍然存在,所以我真的不确定那里发生了什么......

我在这里错过了什么吗?或者是否有理由在此实例中调用Environment.Exit?

.net c# console-application

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