[英]problem with conversion
此代码不返回表中的数据:
var pom = from k in dataContext.student_gods
where k.skgod == System.Convert.ToString(2002/03)
select k.id_stud;
此代码确实从表返回数据:
var pom = from k in dataContext.student_gods
where k.skgod== "2002/03"
select k;
如何转换不带引号的字符串变量???
窥探OP可能会遇到的问题,我怀疑您有一个DateTime对象,您想在查询中使用该对象与存储为字符串的日期进行比较。 在这种情况下,您可以将查询修改为:
DateTime t = ...
var pom = from k in dataContext.student_gods
where k.skgod == t.ToString("yyyy/MM")
select k;
在这里,您正在格式化日期以匹配您期望在数据库中看到的日期。 ToString
方法正在格式化日期以仅返回年和月组成部分。 有关更多信息,请参见MSDN文章“ 自定义日期和时间格式字符串 ”。
进一步来说,目前是11月22日星期日下午3点左右。 如果我运行以下代码:
DateTime t = DateTime.Now();
string s = t.ToString("yyyy/MM");
Console.WriteLine(s);
...我会看到2009/11年印刷的内容。
与"2002/03"
不同, 2002/03
不是字符串,而是2002
除以03
(= 667
)的整数。
您在寻找如何将DateTime
转换为字符串吗?
new DateTime(2002, 3, 1).ToString("yyyy/MM", CultureInfo.InvariantCulture)
这将返回"2002/03"
。
您的问题是2002/03年不是您的意思。 您要在这里转换什么? 2002/03
是两个整数和一个除法,其值为2002/03
2002 / 03 = 667
。 如果需要字符串"2002/03"
,则需要输入字符串"2002/03"
。
我希望这是有道理的:)
如何转换不带引号的字符串变量???
那没有道理。 字符串文字必须用引号引起来,这就是使它成为字符串的原因。 您不能只是尝试通过名称将未声明的变量转换为字符串,否则将无法正常工作。 您只需要与实际字符串进行比较,就像在第二个示例中一样。
字符串"2002/03"
和2002/03
是非常不同的东西。 在C#中,没有诸如带引号的字符串文字之类的东西。 C#不是PHP :-)
2002/03
只是一个整数除法,即2002/3 = 667(请注意,由于这是一个整数除法,因此没有小数位)。
因此,如果您想将某些内容与字符串进行比较,则一定要使用字符串而不是任意的计算结果。 但是请记住,将==
运算符应用于object
和string
操作数时,其行为有些不规律(因为在执行值或引用相等时可能并不立即显而易见)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.