c# LINQ Query

本文关键字:Query LINQ | 更新日期: 2023-09-27 17:48:54

我有以下代码:

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 查询实际返回返回并将返回的字符串作为其值存储,而不必创建另一个对象来保存它? 我知道这个查询和我将要执行的其他一些查询只会返回单个字符串。

谢谢。

c# LINQ Query

这可能是你想要的(注意使用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。