转换问题

时间:2009-11-22 22:19:48

标签: c# linq

此代码不会从表中返回数据:

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;

如何转换不带引号的字符串变量???

5 个答案:

答案 0 :(得分:2)

对OP可能遇到的问题进行了尝试,我怀疑你有一个DateTime对象,你想在查询中使用该对象来比较存储为字符串的日期。如果是这种情况,您可以将查询修改为:

DateTime t = ...
var pom = from k in dataContext.student_gods
         where k.skgod == t.ToString("yyyy/MM")
         select k;

在这里,您要格式化日期以匹配您期望在数据库中看到的日期。 ToString方法将日期格式化为仅返回年份和月份组件。有关更多信息,请参阅Custom date and Time Format Strings上的MSDN文章。

为了扩展这个例子,它目前是11月22日星期日下午3点左右。如果我运行以下代码:

DateTime t = DateTime.Now();
string s = t.ToString("yyyy/MM");
Console.WriteLine(s);

......我将会看到 2009/11

答案 1 :(得分:1)

"2002/03"不同,2002/03不是字符串,而是2002的整数除以03(= 667)。

您正在寻找如何将DateTime转换为字符串吗?

new DateTime(2002, 3, 1).ToString("yyyy/MM", CultureInfo.InvariantCulture)

返回"2002/03"

答案 2 :(得分:1)

你的问题是2002/03不是你的意思。你想在这里转换什么? 2002/03是两个整数和一个除法,它的值是2002 / 03 = 667。如果您想要字符串"2002/03",则需要输入该字符串"2002/03"

我希望这是有道理的:)

答案 3 :(得分:0)

  

如何转换不带引号的字符串变量???

这没有意义。字符串文字必须用引号括起来,这就是使它成为字符串的原因。你不能只是尝试通过名称将未声明的变量转换为字符串,它不会那样工作。您只需要与实际字符串进行比较,就像在第二个示例中一样。

答案 4 :(得分:0)

字符串"2002/03"2002/03是完全不同的东西。在C#中没有没有引号的字符串文字。 C#不是PHP: - )

2002/03只是一个整数除法,即2002/3 = 667(请注意,没有小数位,因为这是一个整数除法。)

因此,如果您想将某些内容与字符串进行比较,那么使用字符串而不是任意计算结果。但请记住,当==运算符应用于objectstring的操作数时,{{1}}运算符的行为有些不规则(因为无论您是在进行值还是引用相等,都可能不会立即明显)。