繁体   English   中英

转换问题

[英]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(请注意,由于这是一个整数除法,因此没有小数位)。

因此,如果您想将某些内容与字符串进行比较,则一定要使用字符串而不是任意的计算结果。 但是请记住,将==运算符应用于objectstring操作数时,其行为有些不规律(因为在执行值或引用相等时可能并不立即显而易见)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM