我只想使用LINQ从MSSQL DB中选择2列。
SQL应该是
select table.col1,table.col2 from table
我试过
IList<string> myResults =
(
from data in dbconn.table
where table.col5 == null
select new {
col1=data.Id.ToString(),
col2=data.col2
}
).Take(20).ToList();
但这不起作用。
它说
cannot convert type list <AnonymousType#1> to Ilist<string>
答案 0 :(得分:11)
您基本上是在尝试使用匿名类型列表的条目填充字符串列表,这将无效。
你尝试过这样的事吗?:
var list = from data in dbconn.table
where table.col5 == null
select new {
col1=data.Id.ToString(),
col2=data.col2
}
然后您可以轻松地使用循环中的条目,例如
foreach(var element in list) {
//...
}
或者像列表一样
list.Take(20).ToList();
答案 1 :(得分:3)
首先,字符串列表(List<string>
)只能在一个元素中只有一个字符串而不是两个(你在这里尝试做什么)将类型改为var会修复你的异常但不确定如果这是你想要的解决方案。
var myResults =
(
from data in dbconn.table
where table.col5 == null
select new {
col1=data.Id.ToString(),
col2=data.col2
}
).Take(20).ToList();
答案 2 :(得分:3)
您可以使用linq选择多个字段选择如上所示,在各种示例中,它将作为匿名类型返回。如果你想避免这种匿名类型,这是一个简单的技巧。
var items = myResults.Select(f => new [] { f.Col1, f.Col2 }).SelectMany(item => item).Distinct();
我认为这解决了问题