我有以下 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);
如果Numbers
和 MeanWeight
属性在同一个继承层次中,那么你可以用object
代替有一些更有用的东西,但在这种情况下 object
很好,因为您只是在测试 null。
关于c# - 使用 C# 泛型压缩代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579389/