所以我有这个使用Firebird的旧代码,我从那里获取代码,因为它工作得很好,但在这里它没有。并抛出一个InvalidCastException。
所以,我正在尝试
animal.FeedScheduleType = (BcFeedScheduleType)drAnimal["feedschedule_type"];
所以我尝试从我的数据表中取出一些东西并将其放在animal.FeedScheduleType中。现在我的演员点了一个公开的枚举
public enum BcFeedScheduleType
{
Default = 0,
FromList = 1,
Group = 2
}
和animal.FeedScheduleType是
private BcFeedScheduleType _feedScheduleType;
public BcFeedScheduleType FeedScheduleType
{
get { return _feedScheduleType; }
set { _feedScheduleType = value; }
}
但无论什么时候它都会打它,它会抛出InvalidCastException错误,我不知道为什么,我在这里搜索谷歌,但无法找到任何关于这样的演员。
编辑:数据库中的Type是一个整数
答案 0 :(得分:2)
试试这个:
def return_anagrams(word_list):
d = {}
out = set()
for word in word_list:
s = ''.join(sorted(word))
try:
out.add(d[s])
out.add(word)
except:
d[s] = word
return out
这是fiddle。
答案 1 :(得分:1)
你有没有尝试过转换为int?
animal.FeedScheduleType = (BcFeedScheduleType)(int)drAnimal["feedschedule_type"];
答案 2 :(得分:0)
我的猜测是你的drAnimal返回一个字符串而不是int。如果是这种情况,那么
animal.FeedScheduleType = (BcFeedScheduleType)Int.Parse(drAnimal["feedschedule_type"]);
如果您不确定drAnimal是什么类型,您可以执行以下操作:
var feedschedule_type = drAnimal["feedschedule_type"];
Console.WriteLine("feedschedule_type is {0}", typeof(feedschedule_type));
基本上,你需要将它变成一个int,然后在你的问题中使用标准演员。
最后,确保Feed计划类型具有有效值。即,确保其值为0,1或2。
答案 3 :(得分:0)
我最近在使用SqlParameter
时遇到了这个问题。
我的猜测是drAnimal["feedschedule_type"]
被存储为SqlDbType.Int
或object
。为了投射我的参数,我必须做类似以下的事情:
(int)(SqlDbType.Int)(drAnimal["feedschedule_type"]);
您可能必须使用类似的链来获取实际的int值并将其强制转换为Enum。