此代码不会从表中返回数据:
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;
如何转换不带引号的字符串变量???
答案 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(请注意,没有小数位,因为这是一个整数除法。)
因此,如果您想将某些内容与字符串进行比较,那么使用字符串而不是任意计算结果。但请记住,当==
运算符应用于object
和string
的操作数时,{{1}}运算符的行为有些不规则(因为无论您是在进行值还是引用相等,都可能不会立即明显)。