decimal dummy;
var subjectMarks = (from DataRow row in objDatatable.Rows
where decimal.TryParse(row["EXM_MARKS"], out dummy)
select Convert.ToDecimal(row["EXM_MARKS"])).Sum();
Decimal Z;
var subjectMarks = (from DataRow row in objDatatable.Rows
where Decimal.TryParse (row["EXM_MARKS"], out Z)
select Convert.ToDecimal(row["EXM_MARKS"])).Sum();
对于使用实体框架核心的LINQ to SQL查询,ISNUMERIC函数是EF下EF Core 6.0的一部分。函数 6.0之前版本可以创建自定义函数Map! User-defined function mapping:除了EF Core提供程序提供的Map外,用户还可以定义自定义Map。用户定义的Map可以根据用户需要扩展查询转换。当数据库中存在用户定义的函数时(例如,用户希望从其LINQ查询调用这些函数),此功能非常有用。
await using var ctx = new BlogContext();
await ctx.Database.EnsureDeletedAsync();
await ctx.Database.EnsureCreatedAsync();
_ = await ctx.Blogs.Where(b => ctx.IsNumeric(b.Name)).ToListAsync();
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
static ILoggerFactory ContextLoggerFactory
=> LoggerFactory.Create(b => b.AddConsole().AddFilter("", LogLevel.Information));
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseSqlServer(@"Server=localhost;Database=test;User=SA;Password=Abcd5678;Connect Timeout=60;ConnectRetryCount=0")
.EnableSensitiveDataLogging()
.UseLoggerFactory(ContextLoggerFactory);
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDbFunction(IsNumericMethodInfo)
.HasName("ISNUMERIC")
.IsBuiltIn();
}
private static readonly MethodInfo IsNumericMethodInfo = typeof(BlogContext)
.GetRuntimeMethod(nameof(IsNumeric), new[] { typeof(string) });
public bool IsNumeric(string s) => throw new NotSupportedException();
}
public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
}
7条答案
按热度按时间70gysomp1#
添加
where
子句以筛选出无法解析为小数的记录。尝试:8iwquhpp2#
您可以创建一个扩展方法
SafeConvertToDecimal
并在LINQ查询中使用它:此扩展方法如下所示:
这种方法的优点是它看起来很干净,而且您不会像所有其他答案那样将每个对象转换两次。
lvmkulzt3#
对于linq to sql查询,可以使用内置的
SqlFunctions.IsNumeric
来源:SqlFunctions.IsNumeric
f1tvaqid4#
使用了
js4nwp545#
你可以像这样做一些扩展实用程序类来获得优雅的解决方案:
并以这种方式使用它:
希望这对你有帮助。
n3ipq98p6#
部分溶液取于:here
lf5gs5x27#
对于使用实体框架核心的LINQ to SQL查询,
ISNUMERIC
函数是EF下EF Core 6.0的一部分。函数6.0之前版本可以创建自定义函数Map!
User-defined function mapping
:除了EF Core提供程序提供的Map外,用户还可以定义自定义Map。用户定义的Map可以根据用户需要扩展查询转换。当数据库中存在用户定义的函数时(例如,用户希望从其LINQ查询调用这些函数),此功能非常有用。