图一为测试的,是会报错的,图二是项目里的,是不会报错的,为什么?

图片说明
图片说明

图二是string转int,图一是decimal转int,为什么string可以,int却不可以?

因为cast会调用ToString,但是不知道如何转decimal

int number = list.Select(x => (int)x).Sum();

decimal转int的话直接强转就可以了!
decimal x = 2.333m;
int y=(int)x;

Cast只能“同类型转换",或者"向上转换”即转换成基类,如object.
若无法进行类型转换时会调用InvalidCastException 例外处理.
图二要真是string转int,应该是会报错。可能是在Where()筛选后没有查到数据,才不会报错。