Visual studio 2010 转换可枚举行集合<;短>;缩短
我有此错误,无法将可枚举行集合Visual studio 2010 转换可枚举行集合<;短>;缩短,visual-studio-2010,c#-4.0,Visual Studio 2010,C# 4.0,我有此错误,无法将可枚举行集合隐式转换为这行代码中的短代码: Month = (from item in query select (short)item.Month); 我想知道为什么以及为什么在查询变量中找不到distinct()或count方法 以下是我的方法: public bool IsEnableAccPosting( string CompanyCode, DateTime FromDate, DateTime ToDate, out short Month) {
隐式转换为这行代码中的短代码:
Month = (from item in query select (short)item.Month);
我想知道为什么以及为什么在查询变量中找不到distinct()或count方法
以下是我的方法:
public bool IsEnableAccPosting(
string CompanyCode, DateTime FromDate, DateTime ToDate, out short Month)
{
try
{
o_dmDebitAccounts = new dmDebitAccounts(sysInfo);
bool IsEnable = false;
DataTable dt = o_dmDebitAccounts.GetDebitInterestAccPeriods(CompanyCode);
var query = from data in dt.AsEnumerable()
where data.Field<DateTime>("StartDate") == FromDate &&
data.Field<DateTime>("EndDate") == ToDate
select new
{
Month = Convert.ToInt16(data.Field<short>("Month")),
Year = Convert.ToInt16(data.Field<short>("Year"))
};
Month = (from item in query select (short)item.Month); //heres the error
public bool isenablecposting(
字符串公司代码、DateTime FromDate、DateTime ToDate、out short Month)
{
尝试
{
o_dmDebitAccounts=新的dmDebitAccounts(sysInfo);
bool IsEnable=false;
DataTable dt=o_dmDebitAccounts.GetDebitInterestAccPeriods(公司代码);
var query=来自dt.AsEnumerable()中的数据
其中data.Field(“StartDate”)==FromDate&&
data.Field(“EndDate”)==ToDate
选择新的
{
月=转换为16(数据字段(“月”),
年份=转换为16(数据字段(“年份”))
};
月=(从查询中的项选择(短)项.Month);//错误在这里
该字段已在执行该操作的linq查询中键入为Int16。您不需要强制转换它
请尝试以下代码
您的意思是:Month=(从查询中的项选择item.Month);我这样做了,但我也没有工作,我想知道为什么我在代码
Month=Convert.ToInt16(data.Field(“Month”)中找不到FirstOrDefault();No.)
显然正在将匿名类型的Month属性强制转换为Int16。如果没有理由再次尝试强制转换,则它已经是dt.AsEnumerable()中的type.var query=from数据,其中data.Field(“StartDate”)==FromDate和data.Field(“EndDate”)==ToDate选择新的{Month=data.Field(“月”),Year=data.Field(“年”)};为什么移除铸造会对你有帮助?!你在问题中特别想要int16的值!?抱歉,伙计,但我不确定你现在想做什么。
if (query.Any())
{
var result = query.First();
// Console.WriteLine("Results: {0}", result.Month);
Month = result.Month;
}