Operating nullabe in c#

这里提到

1.The predefined unary and binary operators and any user-defined operators that exist for value types may also be used by nullable types. These operators produce a null value if the operands are null; otherwise, the operator uses the contained value to calculate the result.

2.When you perform comparisons with nullable types, if the value of one of the nullable types is null and the other is not, all comparisons evaluate to false except for != (not equal). It is important not to assume that because a particular comparison returns false, the opposite case returns true. In the following example, 10 is not greater than, less than, nor equal to null. Only num1 != num2 evaluates to true.

所以int?等可空类型的操作除了!=以外,和Sql基本一样,碰到null就得null或者为false.

linq join中只支持equals

这里有人问了同样的问题,估计不少人都会很自然的发出同样的疑问,没办法了,规定就是规定,而且,join的条件里必须用equals,==都不行。难道微软在join的on后面就只允许equals这一个关键字?还真是的,这里有人回答了。“LINQ directly supports only equi-joins, that is, joins based on equal conditions”

对于join里的大于小于的需求,目前只能转化到where里去。用join(inner join)关键字的话需要加恒真的on条件,或者用笛卡尔积,也就是两个from的形式。其实,T-SQL里的join也是先做笛卡尔积,再把条件转化到where里的。而对于sql中left或者right join里的大于小于的条件怎么表述呢?也是直接在笛卡尔积的linq表述下功夫。

这里是一个Linq left join的例子(right join也差不多),它实际上是新加了一层from(第三层的range variable),然后用DefaultIfEmpty判断第二层是否为空,DefaultIfEmpty有两个重载,如果第二层from得到的元素没有default,就需要用DefaultIfEmpty(new xxxx())的重载。也即是linq并不是直接支持left/right join。

令人感动的《春天里》

北漂,甚至是民工,是他们的命运,有许许多多这样的人,没有机会在他们的春天里绽放。

如同《老男孩》里唱的,有谁知道这世界他们来过。只有他们自己知道,他们努力过,为了音乐这个梦想,他们离开了土地,结局是什么,也许并不重要,因为大家殊途同归,每个人都会面对同样的生命终点。

又或许结局很重要,说不重要的我只是在站着说话不腰疼,因为如果他们梦想实现,就不会老无所依,就不会生活没有物质保障。否则……这差别很大。

但至少从央视的采访中,从王旭对老茧的珍惜中,我看到他对结局并没有大部分人想象的那么看重。老无所依的担忧固然是有,但不愿意回老家踏实养家体现了一种对梦想的付出,愿意拿稳定的生活去交换一样东西是痛苦的,但正是这种壮烈的痛苦折射出人生的伟大–愿意拿自己重要的有限的人生去交换实现梦想的机会,哪怕仅仅是机会。这不等价交换体现了人性,人性中的欲望,恐惧,无畏,矛盾,这些东西交织在一起,没有对与错,好与坏。无畏来自于欲望,欲望又可以滋生贪婪。人性是复杂的,但也是自然界最棒的东西。无数的人性交织在一起,才有了这个社会。