Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#for IQueryable中的参考问题_C#_Linq_Reference - Fatal编程技术网

C#for IQueryable中的参考问题

C#for IQueryable中的参考问题,c#,linq,reference,C#,Linq,Reference,代码: 我在下面的方法中从两个不同的System.Web.UI.Page类调用此方法 卡里赫萨帕尔 耶尼比莱特 问题:当我在CariHesaplar中调用GetAllBy\u hesapadirmadicarino\u Turu\u bypage\u short时,我可以在cari\u paging\u button\u yenile()中的if语句中获取计数。但是,在YeniBilet中,当我尝试获取计数()时,我得到了 错误19“System.Linq.IQueryable”不包含的定义

代码:

我在下面的方法中从两个不同的
System.Web.UI.Page
类调用此方法

  • 卡里赫萨帕尔
  • 耶尼比莱特

  • 问题:当我在CariHesaplar中调用
    GetAllBy\u hesapadirmadicarino\u Turu\u bypage\u short
    时,我可以在
    cari\u paging\u button\u yenile()
    中的if语句中获取计数。但是,在YeniBilet中,当我尝试获取计数()时,我得到了

    错误19“System.Linq.IQueryable”不包含的定义 “Count”和不接受第一个参数的扩展方法“Count” 可以找到“System.Linq.IQueryable”类型(是否缺少使用 指令或程序集引用?)C:\Users\yigit\Desktop\PROTicari (11.04.2011)\UI\MusteriDestek\YeniBilet.aspx.cs 257 17 UI

    我尝试了很多方法来解决这个问题,但都没有奏效。后来,我想可能是页面开头缺少了
    using
    语句。我检查了两个类
    using
    s唯一不同的是
    using System.Linq.Dynamic使用System.Linq所以我认为这不可能是问题所在。但后来我用System.Linq.Dynamic编写了
    也给出了错误,错误消失了


    我的问题是为什么
    使用System.Linq.Dynamic时,不添加代码>引用
    不是
    Linq。动态的
    就像
    Linq
    的一个子集?为什么我必须再次添加它的引用?

    计数方法是一种扩展方法。扩展方法要求使用
    using导入定义它们的命名空间

    Linq.Dynamic不是像Linq的子集吗?为什么我必须再次添加它的引用

    这与问为什么我需要添加
    System.Foo如果我已经在使用系统添加
    。毕竟
    Foo
    也是
    System
    的一个子集。这是名称空间在C#中的工作方式,当您使用using指令添加父名称空间时,不会添加嵌套名称空间

    您可能会争论为什么代码文件模板在默认情况下不添加
    System.Linq.Dynamic
    。在大多数情况下,它是不必要的,因为
    System.Linq.Dynamic
    是语言集成查询功能的专门用途,它使您能够构建动态查询


    关于您得到的错误,如果您检查MSDN,
    IQueryable.Count
    扩展方法是
    System.Linq
    的一部分,因此我不确定添加
    System.Linq.Dynamic
    如何解决您的问题

    我的问题是为什么要使用System.Linq.Dynamic;引用不是 当页面已使用System.Linq时添加;林克不是很有活力吗 就像Linq的子集一样?为什么我必须再次添加它的引用

    这是用C语言设计的,您谈论使用的方式就是java中导入的工作方式。在C#中,没有
    使用System.Linq.*

    确实没有使用
    IQueryable.Count
    而不是
    IQueryable.Count()

    Count()
    对于
    IQueryable
    不存在,但是对于
    IQueryable
    存在。除了在System.Linq.Dynamic*中之外,System.Linq.Dynamic不是基类库的一部分,您将始终必须添加对它的引用(如果您将其编译为DLL)或使用命名空间(如果您的项目中包含Dynamic.cs)。它不是BCL中Linq的一个子集。为了加强大家所说的,使用名称空间只使用该名称空间(其顶级)。这是C语言的设计,由编译器执行


    *现在,JohnnyCageWins已被弃用,但它们都有using System.Linq;“using指令并没有添加任何引用。他们告诉编译器您想对某些类型使用速记。例如,使用System.Collections.Generic可以使用缩写IEnumerable,而不是完全限定的名称System.Collections.Generic.IEnumerable。您添加了对程序集的引用。是的,我肯定会使用Count(),感谢您的类似java的解释。那么您是说Linq没有扩展Linq.Dynamic有吗?“关于您得到的错误,如果您检查MSDN,IQueryable.Count扩展方法是System.Linq的一部分,因此我不确定添加System.Linq.Dynamic如何解决您的问题。可查询的计数方法(IQueryable)“我也不确定,但这就是解决方案。我检查了三次。谢谢你,这真的很有启发性。啊哈!!这让我坚持了大约一个小时。
    public static IQueryable GetAllBy_HesapAdiFirmaAdiCariNo_Turu_bypage_short(string filter, string tip, int page_size, int page_index, string sortcolumn, bool sortdirection)
    {
        //bool tip: 0-tümü, 1-son kullanici, 2-bayi, 3- tedarikçi
        VeriyazDBDataContext db = new VeriyazDBDataContext(); db.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
        var cariKayitlari = DAL.DAOCari.SelectAll();
        var kayitlar = (from rows in cariKayitlari
                        where rows.HESAPADI.ToLower().Contains(filter.ToLower()) ||
                            (rows.CARITURU == "Bireysel" ? rows.B_ADSOYAD.ToLower().Contains(filter.ToLower()) : 
                                                            rows.K_FIRMAADI.ToLower().Contains(filter.ToLower())) ||
                            (rows.CARITURU == "Bireysel" ?
                            rows.B_ADSOYAD.ToLower().Contains(filter.ToUpper()) :
                            rows.K_FIRMAADI.ToLower().Contains(filter.ToUpper())) ||                                   
                            rows.ID.ToString().Contains(filter)
                        select rows);
    
        switch (tip)
        {
            case ("Tümü"):
            default:
            {
                break;
            }
            case ("Son Kullanici"):
            {
                kayitlar = kayitlar.Where(rows => rows.SONKULLANICI == true);
                break;
            }
            case ("Bayi"):
            {
                kayitlar = kayitlar.Where(rows => rows.BAYI == true);
                break;
            }
            case ("Tedarikçi"):
            {
                kayitlar = kayitlar.Where(rows => rows.TEDARIKCI == true);
                break;
            }
        }
    
        var kayitlar2 = from rows in kayitlar
                        select new
                        {
                            HESAPNO = rows.ID,
                            HESAPADI = rows.HESAPADI,
                            CARIADI = (rows.CARITURU == "Bireysel" ? rows.B_ADSOYAD : rows.K_FIRMAADI)
                            //BAKIYE= "",
                            //PARABIRIMI = rows.LISTEPARABIRIMI
                        };
    
        if (sortcolumn != "")
        {
            if (sortdirection)
                kayitlar2 = kayitlar2.Order(sortcolumn, SortDirection.Ascending).AsQueryable();
            else
                kayitlar2 = kayitlar2.Order(sortcolumn, SortDirection.Descending).AsQueryable();
        }
    
        return kayitlar2.Skip(page_size * (page_index)).Take(page_size);
    }
    
    private void cari_paging_button_yenile()
    {
        Button_CariIleri.Enabled = true;
        Button_CariGeri.Enabled = true;
    
        if (CariPageIndex == 0)
            Button_CariGeri.Enabled = false;
        string tumu = "Tümü";
    
        if (DAL.DAOCari.GetAllBy_HesapAdiFirmaAdiCariNo_Turu_bypage_short(TextBox_CariArama.Text, tumu, CariPageSize, CariPageIndex + 1, CariSortColumn, CariSortDirection).Count() == 0)//problem occured in this row
            Button_CariIleri.Enabled = false;
    }