linq to sql获取单值

时间:2016-01-29 03:47:56

标签: vb.net linq linq-to-sql lambda distinct

我正在寻找一种简洁的一行方法,使用DataTable

使用lambda从VB.Net获取单个值

此代码有效

OPT_UDLY = (From X In DATA.OPTIONs
                    Where X.CONTRACT = CTC
                    Select X.UDLY).Single()

但是我想把这个值放在这一行(这不起作用)

OPT_UDLY = DATA.Where(function(t) t.contract.Equals(CTC)).Distinct()

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

import openpyxl
import warnings

warnings.simplefilter("ignore")

preq   = openpyxl.load_workbook('/Users/Ians/Desktop/_complete.xlsx')
preqWb = preq.get_sheet_names()
preqAS = preq.get_sheet_by_name(preqWb[0])
newRwa = open('/Users/Ians/Desktop/newRwa.xlsx','w')
for i in range(2, 101):
    a=preqAS['A'+str(i)].value <==== correct value printed
    b=preqAS['B'+str(i)].value <==== correct value printed
    newRwa.write(a,b)   <=========== error line TypeError: 'str' object is not callable

newRwa.close()
  1. 由于您在多个LINQ行中使用OPT_UDLY = Data.OPTIONs.Where(Function(t) t.CONTRACT = CTC).Select(Function(x) x.UDLY).Single() ,因此它也应始终用于单行。
  2. 此外,由于您只需要Data.OPTIONs元素,因此请使用单行样式中的UDLY Select表达式,就像您在多行中所做的那样。
  3. 最后,如果只有一个匹配项,请使用LINQ返回匹配值,就像您已经做过的那样。

答案 1 :(得分:1)

只需删除换行符:

OPT_UDLY = (From X In DATA.OPTIONs Where X.CONTRACT = CTC Select X.UDLY).Single()

它比lambda等价物更短,更易读:

OPT_UDLY = Data.OPTIONs.Where(Function(t) t.CONTRACT = CTC).Select(Function(x) x.UDLY).Single()