linq的返回值属于什么类型?

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:56:05
想写个linq to xml的方法
/// <summary>
/// 查询指定节点名的全部数据
/// </summary>
/// <typeparam name="ROOTEL"></typeparam>
/// <returns></returns>
public static Array ReturnAllRows(this XElement EXsrc, string ROOTEL, Expression<Func<XElement, Array>> predicate)
{
return EXsrc.Descendants(ROOTEL).Select(predicate).ToArray();
}

提示

错误 1 无法从用法中推导出方法“System.Linq.Enumerable.Select<TSource,TResult>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TResult>)”的类型实参。请尝试显式指定类型实参。 C:\Users\Bin\Desktop\ZHKJ\LINQUtility\ZHKJ.LINQUtility\LinqToXml.cs 22 20 ZHKJ.LINQUtility

请问Expression<Func<XElement, Array>> predicate这里应该怎么处理啊,比如参数是

x => new {
用户名 = x.Element("user").Value

返回一个匿名类型:
new { 用户名, 时间, 消息}

Func<XElement,Array>这是一个匿名函数。

如果参数是这样你就可以这样写:
Expression<x=>new{用户名 = x.Element("user").Value.ToUpper()
,
时间 = x.Element("logdate").Value
,
消息 = x.Element("message").Value }>,就好像是用代理一样:

Expression<delegate(){return new {用户名 = x.Element("user").Value.ToUpper()
,
时间 = x.Element("logdate").Value
,
消息 = x.Element("message").Value }}>