none
貌似是LinQ的BUG RRS feed

  • 问题

  • 我在使用LinQ的时候发现如下问题
    var v = from info in list (注释:list 为Table<T>类型)
             select new {X = info.X.Tostring()};
    在v.ToList<string>()时会发生 VerificationException异常,异常内容:"操作导致运行时不稳定"
    如果将代码改为
    var v = from info in list (注释:list 为Table<T>类型)
             select new {X = Convert.ToString(info.X)};
    就不会有异常抛出,
    经过试验凡是Object的方法比如ToHashCode使用也会产生这个问题
    2009年6月3日 5:42

答案

  • new {X = info.X.Tostring()}; 是一个   匿名类型   里面的  成员X是string

    class _type
    {
       piublic X (){get; set;}
    }

    这时候的v 是list<_type>

    恐怕不能直接转化为 string吧, 每次都调用了  object.ToString() 恐怕会有问题


    请您用
    v.select(o=>o.X).ToList();  试验下  恐怕就过了
    紫柔版主的头像真叫萌得一个不行啊。。。。
    • 已标记为答案 coolsun 2009年6月3日 8:41
    2009年6月3日 7:39

全部回复

  • new {X = info.X.Tostring()}; 是一个   匿名类型   里面的  成员X是string

    class _type
    {
       piublic X (){get; set;}
    }

    这时候的v 是list<_type>

    恐怕不能直接转化为 string吧, 每次都调用了  object.ToString() 恐怕会有问题


    请您用
    v.select(o=>o.X).ToList();  试验下  恐怕就过了
    紫柔版主的头像真叫萌得一个不行啊。。。。
    • 已标记为答案 coolsun 2009年6月3日 8:41
    2009年6月3日 7:39
  • 我在网上找到了~貌似的确是微软的问题~

    2009年6月3日 8:41
  • Convert.ToString(object)不会扔NullReferenceException。在参数为null时会返回String.Empty
    X.Tostring()在X为null时会扔NullReferenceException

    MSMVP VC++
    2009年6月3日 13:44
    版主
  • X不会为NULL的,抛出的是VerificationException异常"操作导致运行时不稳定"
    https://connect.microsoft.com/里面有人提过这个问题,微软说在下个版本中解决这个问题
    2009年6月4日 1:13