C#, MVC4 - EF Linq searches
本文关键字:Linq searches EF MVC4 | 更新日期: 2023-09-27 18:12:52
好的,我有两个问题。首先,假设我有一个名为"EntitiesDefinitions"的EF,它包含一个名为"stringData"的数据表,其中每个单元格被定义为varchar(100),如下所示:
----------------------------------------------
| | column1 | column2 | column3 | ... |
----------------------------------------------
| row1 | "1,2,3,4" | "5,6,7,8" | "9,a,b,c" | ... |
----------------------------------------------
| row2 | "d,e,f,g" | "h,i,j,k" | "l,m,n,o" | ... |
每个单元格包含由逗号分隔的4条信息。所以我想知道的是,如果有一种方法让我执行Linq搜索(作为一个例子)在列1中的每个单元格的第2条信息?
using (EntitiesDefinitions ef = new EntitiesDefinitions())
{
var v = (from a in ef.stringData where (a.column1... == "e") select a);
}
我知道我可以让每个单元格4列(column1_1, column1_2,…Column2_1, column2_2,…),但如果我得到一个有+250个原始列的表,那就行不通了。那么,有没有一种方法可以执行这样的搜索呢?
另一个问题也与此有关。回到ASP。. NET我可以发送查询到我的sql使用这样的字符串:
var stringSql = "SELECT * FROM" + "stringData" + "WHERE ([" + "column1" + "] =" + "e" + ")" + "ORDER by ["+ "column1" +"] ASC;"
基本上,我可以定义哪个表搜索给定的字符串值,表示该属性/列。EF linqs有办法做到这一点吗?
using (EntitiesDefinitions ef = new EntitiesDefinitions())
{
var v = (from a in ef.stringData where (a.["column1"]... == "e") select a);
}
我是相当新的MVC和EF,所以我想知道如果这是可能的。
从我对你的问题的理解来看,如果你确定它总是不为空,你可以尝试一下:
var res = ef.stringData.Where(c => c.column1.Split(',')[1] == "e")
对于第二个问题,你输入"ef"。
在Fehintola的建议下,我能够针对这些主题做更多的研究,并且我能够找到两个问题的解决方案。如果有人感兴趣,这里是我想到的:
对于第一个问题,虽然不是很优雅,但我们可以将数据封装在特定的字符/分隔符中,然后我们可以在嵌套搜索中处理搜索结果。例如:
using (EntitiesDefinitions ef = new EntitiesDefinitions())
{
//Data could look like";1;*2*&3#"
var v = (from a in ef.stringData where select a); //to store the table
v = c.Where(f => f.column1.Contains("*2*")) //look for the second value
v = x.Where(f => f.column1.Contains("#4.3#"));//look for the forth value
//Do some other stuff...like sending the data to a table
}
对于第二个问题,您可以像这样创建原始sql查询:
string sqlExample = @"SELECT VALUE a FROM ef.stringData AS a WHERE (a.column1 == '*2*')";
var test = ef.CreateQuery<stringData>(sql).AsQueryable();
这是你可以把变量放在sqlExample字符串动态构建你的查询,你会得到一个IQueryable对象,你可以使用,例如,传递到一个表。
我希望这对将来的人有所帮助,并感谢所有提供建议的人。