Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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
使用Linq在单个列上选择distinct,然后使用databind repeater VB.net_Vb.net_Linq - Fatal编程技术网

使用Linq在单个列上选择distinct,然后使用databind repeater VB.net

使用Linq在单个列上选择distinct,然后使用databind repeater VB.net,vb.net,linq,Vb.net,Linq,这项工作: Dim cmdSelect As Data.SqlClient.SqlCommand Dim dtr As Data.SqlClient.SqlDataReader Dim strSelect As String strSelect = "SELECT DISTINCT DVIRDate FROM dbo.tblDVIR " _ & "WHERE (DVIRDate > DATEADD(day, - 30, { fn NO

这项工作:

    Dim cmdSelect As Data.SqlClient.SqlCommand
    Dim dtr As Data.SqlClient.SqlDataReader
    Dim strSelect As String
    strSelect = "SELECT DISTINCT DVIRDate FROM dbo.tblDVIR " _
        & "WHERE (DVIRDate > DATEADD(day, - 30, { fn NOW() }))"
    cmdSelect = New Data.SqlClient.SqlCommand(strSelect, ConDB)
    ConDB.Open()
    dtr = cmdSelect.ExecuteReader()
    'Bind to Repeater
    Repeater1.DataSource = dtr
    Repeater1.DataBind()
    dtr.Close()
    ConDB.Close()

   <asp:Repeater ID="Repeater1" runat="server" >
   <ItemTemplate>  
   <%# DataBinder.Eval(Container.DataItem, "DvirDate")%>
   <br />
   </ItemTemplate>
   </asp:Repeater>
我得到一个HttpException,“数据绑定:'System.DateTime'不包含名为'DvirDate'的属性。”

有趣的是,当我绑定到一个自动生成columns=true的gridview时,它会工作,并且该列名为“Item”


我只是没有在
databinder.eval
中使用正确的表达式,还是做了其他错误的事情?这在Linq中应该很容易,我已经尝试了在
databinder.eval()
中所能想到的一切,我一定遗漏了什么。

这两种情况之间有区别。第一种方法是绑定一个
DataReader
,因此
Eval
方法像reader(“DvirDate”)一样使用它,它可以工作。第二个是创建
DateTime
struct的数组。此数组有一个名为
Item
的属性,因此自动生成列会带来此列名,但每个项都是
DateTime
,并且没有名为DvirDate的属性

您可以通过两种方式解决此问题:

  • 创建一个包含属性“DvirDate”的类型

    Dim sel=来自一个以db.tblDVIRs为单位的a_ 其中a.DVIRDate>DateAdd(DateInterval.Day,-30,Now())_ 使用{.DVIRDate=a.DVIRDate}选择新建_ 明显的

  • 将数据绑定表达式更改为:

  •     Dim db As New DataContext
        Dim sel = From a In db.tblDVIRs _
                  Where a.DVIRDate > DateAdd(DateInterval.Day, -30, Now()) _
                  Select a.DVIRDate _
                  Distinct
    
        Repeater1.DataSource = sel
        Repeater1.DataBind()