为什么double.IsNegative(double.NaN)意外返回true而按预期double.NaN < 0返回false?
我想知道是否有可能创建“单行” Linq来检索特定Datatable列的最长字符串值,这意味着所有列数据(数字,日期,字符串...)都应转换为字符串,然后返回最长的字符串。
我发现的只是从列表中获取最长字符串或最大长度值的方法。
这是我到目前为止尝试过的(长度错误):
string maxString = dt
.AsEnumerable()
.Select(row => row[mycolumn].ToString())
.Where(s => s.OrderByDescending(st => st.Length).First());
Run Code Online (Sandbox Code Playgroud) 我正在寻找很多,但直到现在才找到我需要的东西.我有两个整数arrayas int [] x和int [] y.我想在这两个整数数组之间找到简单的线性相关,它应该将结果返回为double.在java中你知道提供这个或任何代码片段的任何库函数吗?
是否可以在不使用带编码的字符串的情况下检查类型是否是命名空间的一部分?
我正在尝试做类似的事情:
Type type = typeof(System.Data.Constraint);
if(type.Namespace == System.Data.ToString())
{...}
Run Code Online (Sandbox Code Playgroud)
要么
Type type = typeof(System.Data.Constraint);
if(type.Namespace == System.Data)
{...}
Run Code Online (Sandbox Code Playgroud)
避免
Type type = typeof(System.Data.Constraint);
if(type.Namespace == "System.Data")
{...}
Run Code Online (Sandbox Code Playgroud)
这些例子没有编译,但应该让我知道我想要实现的目标.
我不能使用,nameof(System.Data)因为它只返回"Data".
我想找到一种方法来检查一个类是否是命名空间的一部分而不需要在字符串中包含该命名空间.
这个条件是什么意思?
if (!helper?.Settings.HasConfig ?? false)
Run Code Online (Sandbox Code Playgroud)
PS
helper 是某类的变量Settings 是一些领域HasConfig 也是场目前在我的项目的一部分中存在如下的域对象:
public class Address
{
public virtual string HouseName { get; set; }
public virtual string HouseNumber { get; set; }
public virtual string RoadName { get; set; }
public virtual string Postcode { get; set; }
public virtual string District { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
District属性是数据库中的计算列.由于数据访问提供程序(实体框架)的要求,需要私有集.这在正常的程序流程中很好,因为区域永远不需要设置,因为在数据库中保存/更新地址记录时它会被更新
我想测试的方法如下所示:
public IEnumerable<House> GetHousesWithinSameDistrict (int addressId)
{
var addressToMatch = _addressRepository
.FirstOrDefault(address => address.Id == addressId)
return _houseRepository
.Where(house => house.Address.District == addressToMatch.District)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试设置addressToMatch变量时,这会导致我出现问题,因为我无法设置District属性,因此我无法编写测试来检查是否返回了正确的匹配地址.
我该如何设置此测试的Address对象?
我习惯于检查方法的参数是否为null(然后继续抛出异常),我几乎不再考虑它了.如果参数是引用类型,那么它就在那里:
if(arg == null)
throw new ArgumentNullException(nameof(arg));
Run Code Online (Sandbox Code Playgroud)
但是,如果我要立即使用arg怎么办?我应该检查一下吗?我的意思是,如果我不这样做,无论如何,envinroment将为我抛出(NullReferenceException).
例如:
public int DoStuff(object o)
{
return o.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松地添加null检查:
public int DoStuff(object o)
{
if(o == null)
throw new ArgumentNullException(nameof(o));
return o.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下都会抛出异常(在几乎完全相同的行中,出于调试目的).唯一的区别是类型.
问题:在具有单个引用类型参数的公共方法上,如果我要立即使用该参数,我是否仍应检查它是否是?null
是否有一种单行方式将字符串设置为固定长度(在C#中),方法是截断它或用空格填充它.
例如:
string s1 = "abcdef";
string s2 = "abc";
Run Code Online (Sandbox Code Playgroud)
设置为长度5后,我们应该:
"abcde"
"abc "
Run Code Online (Sandbox Code Playgroud) 我有一个存储事务和日期列的oracle表.如果我需要选择一年的记录说2013年我喜欢这样:
select *
from sales_table
where tran_date >= '01-JAN-2013'
and tran_date <= '31-DEC-2013'
Run Code Online (Sandbox Code Playgroud)
但我需要一种直接的方式来选择一年的记录,比如从应用程序传递参数'2013',以便在一年内从记录中获得结果而不给出范围.这可能吗?