C# 如何使用LINQtoSQL从行中选择一列
我将此C与linq to sql一起使用:C# 如何使用LINQtoSQL从行中选择一列,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我将此C与linq to sql一起使用: string currentLabel = from s2f in stream2FieldTypesTable where s2f.s2fID == item.s2fID && (s2f.s2fLabel != item.s2fLabel || s2f.s2fIsRequired != item.s2fIsRequired)
string currentLabel = from s2f in stream2FieldTypesTable
where s2f.s2fID == item.s2fID
&& (s2f.s2fLabel != item.s2fLabel || s2f.s2fIsRequired != item.s2fIsRequired)
select s2f.s2fLabel;
我收到一个编译器错误,说我无法将System.Linq.IQueryable类型分配给字符串
我尝试了以下代码:
string currentLabel = from s2f in stream2FieldTypesTable
where s2f.s2fID == item.s2fID
&& (s2f.s2fLabel != item.s2fLabel || s2f.s2fIsRequired != item.s2fIsRequired)
select s2f.s2fLabel.ToString();
这将返回相同的错误。我相信这很简单。我错过了什么?我只需要与where子句匹配的第一个s2fLabel。查询的实际类型将是IEnumerable。LINQ的概念是,为了实际执行查询,您需要调用一个在IEnumerable上迭代的方法: 要获得精确的一个实例,可以是FirstOrDefault方法或SignleOrDefault,也可以是First或Single。唯一的区别是,如果枚举不能满足它们的期望,没有OrDefault的方法将抛出异常,而带有OrDefault的方法将只返回null 编辑 Single和First之间的区别在于Single需要集合中的一个元素,First需要至少一个元素。请尝试First或FirstOrDefault,而不是ToString或ToString之外的元素 First和FirstOrDefault返回一条记录,而不是一组记录,这是您的第一个查询所执行的操作。请尝试以下代码
var result = (from s2f in stream2FieldTypesTable
where s2f.s2fID == item.s2fID
&& (s2f.s2fLabel != item.s2fLabel || s2f.s2fIsRequired != item.s2fIsRequired)
select s2f.s2fLabel).First();
这是需要,因为你的结果是
IEnumerable<String>
你需要做的就是在你的LINQ前后加上括号,然后使用。第一个默认值是你只需要一个值,这个值有字符串currentLabel 字符串currentLabel=来自中的s2f stream2FieldTypesTable 其中s2f.s2fID==项目s2fID &&s2f.s2fLabel!=需要项目s2f.s2f.s2f != 第5.2项:需要 选择s2f.s2fLabel.FirstOrDefault
Single、First和FirstOrDefault之间有什么区别?返回类型是这里的突出因素,而不是延迟执行。突出因素下的含义是什么?这似乎与问题无关,但即使是,这个问题已经有近四年的历史了,并且已经有很多好的答案,其中一个已经被接受。如果你在寻找代表积分,这不是一种方法。
IEnumerable<String>
int id =Convert.ToInt32(db.Table.Single(x => x.Id == id_factor).Id);