我需要查询具有未知列的数据表以返回列的子集。
显然,使用数据视图这很容易,但LINQ怎么样?
我将把数据表和列名作为参数传递给应该进行查询的方法。
我没有LINQ经验,到目前为止我在SO上看到的似乎是LINQ中唯一的动态部分是WHERE过滤器,而不是哪些列被选中。
我错了吗?
如果是这样,你可以提供样品吗?
答案 0 :(得分:4)
以下是如何使用Linq to DataSet选择任意两列的快速示例:
public static void SelectRandomColumns(DataTable dataTable, string col1, string col2)
{
// Select into an anonymous type here, but you could
// select into a custom class
var query = from row in dataTable.AsEnumerable()
select new
{
p1 = row[col1],
p2 = row[col2]
};
// Do whatever you need to do with the new collection of items
foreach (var item in query)
{
Console.WriteLine("{0}: {1}, {2}: {3}", col1, item.p1, col2, item.p2);
}
}
如果您需要选择随机数量的列,那么这会变得有点棘手,但希望这会让您朝着正确的方向前进。
答案 1 :(得分:1)
我没有使用它,但.NET 3.5 / VS2008附带的Dynamic LINQ库允许您使用基于字符串的select子句。这是Scott Guthrie关于它的博客的link(其中还包括下载图书馆的链接)。
Scott博客的图片显示了动态LINQ表达式示例,它显示表达式的每个主要子句都可以是生成的字符串。
希望这有帮助!