我是LINQ和lambda函数的初学者。我想知道如何使用selectmany函数将多个linq语句转换为一个语句。
string viewname = (from a in StoredProcedureParameters.Tables[0].AsEnumerable()
where a.Field<string>("ViewName") == displayName
select a.Field<string>("View")).Single();
DateTime date = (from d in StoredProcedureParameters.Tables[0].AsEnumerable()
select d.Field<DateTime>("Date")).First();
提前感谢您的帮助。
答案 0 :(得分:3)
如果您想要单个查询,则可以将选择值设置为匿名类型。但返回值的范围是创建类型的方法。
var result = (from a in StoredProcedureParameters.Tables[0].AsEnumerable()
where a.Field<string>("ViewName") == displayName
select new { View = a.Field<string>("View"),
Date = d.Field<DateTime>("Date") }).Single();
然后变量结果将是具有“视图”和“日期”属性的对象。但是,您无法从方法返回此值。如果需要返回值,可以创建一个简单的类
public class ViewDate
{
public string View { get; set; }
public DateTime Date { get; set; }
}
然后使用对象初始值设定项,最终会得到包含ViewDate对象实例的结果,您可以从方法中返回该实例。
var result = (from a in StoredProcedureParameters.Tables[0].AsEnumerable()
where a.Field<string>("ViewName") == displayName
select new ViewDate() { View = a.Field<string>("View"),
Date = d.Field<DateTime>("Date") }).Single();
答案 1 :(得分:0)
我认为SelectMany
不符合你的想法。它通常只是一个扁平的操作。在这种情况下,为什么你认为它对你有帮助?为什么要避免两个查询?