c# - 使用 C# 泛型压缩代码

标签 c# linq generics

我有以下 2 种方法,我可以使用泛型在一种方法中压缩它们。我试过的无法编译。有人可以让我知道如何做到这一点吗?我需要检查 AgeLengths 表的 2 个不同字段是否至少有一个值。 Str_table 与 AgeLengths 是一对多的关系。

public static bool HasMeanWeight(int id)
{
    MyDataContext dc = new MyDataContext ();
    return  (from s in dc.Str_table 
             where s.SId == id 
             select s.AgeLengths
             .Where(a => a.MeanWeight != null ).Any() == true
            ).FirstOrDefault();
}

public static bool HasNumbersData(int id)
{
    MyDataContext dc = new MyDataContext ();
    return (from s in dc.Str_table 
            where s.sId == id 
            select s.AgeLengths
            .Where(a => a.Numbers  != null).Any() == true
           ).FirstOrDefault();
}

提前致谢 B

最佳答案

更新:抱歉,我没有意识到这是 linq to sql。 Dennis's answer似乎是对的。

尝试注入(inject) Func<T, TResult>注入(inject)不同的代码:

public static bool HasData(int id, Func<AgeLength, object> selector)
{
    MyDataContext dc = new MyDataContext ();
    return (from s in dc.Str_table 
            where s.sId == id 
            select s.AgeLengths
                .Where(a => selector(a) != null)
                .Any())
           .FirstOrDefault();
}

然后这样调用:

HasData(1, a => a.Numbers);
HasData(1, a => a.MeanWeight);

如果NumbersMeanWeight属性在同一个继承层次中,那么你可以用object代替有一些更有用的东西,但在这种情况下 object很好,因为您只是在测试 null。

关于c# - 使用 C# 泛型压缩代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579389/

相关文章:

c# - 在 C# 中使用 linq 对 List<> 进行排序

c# - WithDegreeOfParallelism(N>CPU 数量)

c# - byte[] 不包含 SequenceEqual 身份验证方法的定义

c# - 我可以在单个泛型类型上指定多个约束吗?

java - 抽象数据类型,按列表中的特定变量对对象进行排序

c# - ASP.NET GridView : Highlighting rows on mouse over then updating the highlighted rows

c# - MVC 路由 - 参数名称问题

c# - 使用 LINQ/Lambdas 将 String[] 复制到 List<String> 中?

c# - Linq DELETE 在 SQL Server 中生成 UPDATE 查询

java - 如何使用泛型初始化数组?