[英]C# entity framework fromsqlraw query with includes (in) instead of where clause
What is the correct syntax for varname to make this query work? varname 使此查询工作的正确语法是什么? I can get it to work with a single variable like
我可以让它与单个变量一起工作,例如
string varname = "TOTAL_NORWAY"
However, if I want to have a few variables in there, I get an empty array returned:但是,如果我想在其中包含一些变量,则会返回一个空数组:
string varname = "'TOTAL_NORWAY', 'TOTAL_SWEDEN'";
return await _Context.theDataModel.FromSqlRaw(@"
select data
from data_table
where Variable in ({0})
", varname).ToListAsync();
Remember that you can combine FromSqlRaw
with Linq:请记住,您可以将
FromSqlRaw
与 Linq 结合使用:
string varnames = new [] { "TOTAL_NORWAY", "TOTAL_SWEDEN" };
var query = _Context.theDataModel.FromSqlRaw(@"
select data
from data_table");
query = query.Where(x => varnames.Contains(x.Variable));
// Add more where clauses as needed
return await query.ToListAsync();
ErikEJ's post was very helpful. ErikEJ 的帖子非常有帮助。 The solution is not so trivial for someone who doesn't dabble in EF Core regularly.
对于不经常涉足 EF Core 的人来说,解决方案并不是那么简单。
I also had an extra where clause to consider, and this was done like so for anyone else wondering.我还有一个额外的 where 子句需要考虑,对于其他想知道的人来说,这是这样做的。
var items = new int[] { 1, 2, 3 };
var parameters = new string[items.Length];
var sqlParameters = new List<SqlParameter>();
for (var i = 0; i < items.Length; i++)
{
parameters[i] = string.Format("@p{0}", i);
sqlParameters.Add(new SqlParameter(parameters[i], items[i]));
}
sqlParameters.Add(new SqlParameter("@userid", "userXYZ123"));
var rawCommand = string.Format("SELECT * from dbo.Shippers WHERE ShipperId IN ({0}) and userid = {1}", string.Join(", ", parameters), "@userid");
var shipperList = db.Set<ShipperSummary>()
.FromSqlRaw(rawCommand, sqlParameters.ToArray())
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.