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;

}