如何编写表达式树语法来查找属性的最大值

时间:2013-06-20 09:48:48

标签: c# .net linq linq-expressions

使用C#EF 4.想要查找列表最大信息

    selector= entityBillax.BillTaxID

  public static List<T> GetMaxRowIDForChild2<T>(T fromList, Expression<Func<T,T>> selector)
        {        
            selector = fromList.Count + 1;

            if (fromList.Count > 0)
            {
                selector = fromList.Max(x => x.BillTaxID) + 1;
            }
            else
            {
                selector = 1;
            }
        }

以上语法不起作用,选择参数面临问题。可以编写表达式树来计算max,基于属性。

如果有任何疑问,请询问。谢谢高级。

1 个答案:

答案 0 :(得分:1)

我不知道这是你问的问题,但如果你有IQueryable表示某个数据库表而Expression从该表中选择一个整数属性并且你想得到该属性的最大值+ 1(如果表为空,则为1),那么你可以这样做:

public static int GetMaxRowId<T>(
    IQueryable<T> source, Expression<Func<T, int>> selector)
{
    if (source.Any())
        return source.Max(selector) + 1;

    return 1;
}

虽然此代码存在一些问题,但它应该作为实际代码的基础。