2016-09-30 79 views
0

我试图找出Linq。我只有很小的成功,大部分文章都是针对C#而不是帮助的。Linq,SQL和ISNULL

我试图做以下工作;

Dim query = From r In db.eq_list 
       Join s In db.interview_main On r.CLIENTCODE Equals s.CLIENTCODE And r.CONTROL Equals s.CONTROL 
       Select New With {r.UserName, r.CONTROL, r.CLIENTCODE, r.CLIENTLOCATION, r.IDATETIME, r.FIRSTNAME, 
        r.LASTNAME, If(String.IsNullOrEmpty(s.Code), 0, s.Code)} 


    dgvOnHold.DataSource = query.ToList 

问题是IF部分。这部分可以在数据库中为NULL,但我希望它返回为0如果为NULL。我把它放到一个只读的Datagridview中。原始的SQL如下;

SELECT r.ID,r.UserName,r.CONTROL,r.CLIENTCODE,r.CLIENTLOCATION,r.IDATETIME,r.FIRSTNAME,r.LASTNAME,ISNULL(s.CODE,0) AS CODE 
FROM system.eq_list AS r 
LEFT JOIN interview.main AS s ON r.CLIENTCODE = s.CLIENTCODE AND r.CONTROL = s.CONTROL; 

回答

1

目前无法检查,但怎么样?

Dim query = From r In db.eq_list 
      Join s In db.interview_main On r.CLIENTCODE Equals s.CLIENTCODE And r.CONTROL Equals s.CONTROL 
      Select New With {r.UserName, r.CONTROL, r.CLIENTCODE, r.CLIENTLOCATION, r.IDATETIME, r.FIRSTNAME, 
       r.LASTNAME, If(s.Code is Nothing, 0, s.Code)} 


dgvOnHold.DataSource = query.ToList 
+0

我得到的错误:匿名类型的成员名称只能从一个简单的没有参数的限定名称推断出来。 - 我在你的IF声明前添加了.memberof =。这解决了即时错误,但现在它不会让我把数据放入DataGridView。 – Kayot