我有以下代码:
var tableID = from data in studyData.Tables["MX_MD_TABLE"].AsEnumerable()
where data.Field<string>("table_name").ToLower() == "mbddx_study_set"
select data.Field<long>("ID").ToString();
string tableID = tableID.ElementAt(0).ToString();
它按预期工作,表ID是我想要的。 有没有办法让 LINQ 查询实际返回返回并将返回的字符串作为其值存储,而不必创建另一个对象来保存它? 我知道这个查询和我将要执行的其他一些查询只会返回单个字符串。
谢谢。
这可能是你想要的(注意使用FirstOrDefault):
var tableID = (from data in studyData.Tables["MX_MD_TABLE"].AsEnumerable()
where data.Field<string>("table_name").ToLower() == "mbddx_study_set"
select data.Field<long>("ID").ToString()).FirstOrDefault();
这将选择在表中找到的第一个符合所需条件的元素,而不是返回集合;无论如何,元素的ID
应该是唯一的,所以你应该只寻找一个,我怀疑。
请注意,它还返回由 Field<long>
定义的预期类型的值,因此此时您只需在检查它返回某些内容后调用 ToString
tableID
- 但不将其附加到FirstOrDefault
调用,因为这可能会返回 null。
string tableID = (from data in studyData.Tables["MX_MD_TABLE"].AsEnumerable()
where data.Field<string>("table_name").ToLower() == "mbddx_study_set"
select data.Field<long>("ID").ToString()).ElementAt(0).ToString();
tbls.AsEnumerable().Single(o => o.Field<string>("table_name") == "value").Field<long>("ID").ToString();
尽管我质疑您在数据表上使用 LINQ 来返回标量值。
编辑:
LINQ 很棒,很有用,功能非常强大,但也非常昂贵。 数据表有自己的内置方法来搜索数据和返回结果。
有关示例,请参阅 MSDN 上的 http://msdn.microsoft.com/en-us/library/y06xa2h1(v=VS.100).aspx。