Вы ищете itertools.product
:
>>> import itertools as it
>>> a = [1,2,3,4,5]
>>> b = ["banana", "orange", "pear"]
>>> for x in it.product(a, b):
... print(x)
...
(1, 'banana')
(1, 'orange')
(1, 'pear')
(2, 'banana')
(2, 'orange')
(2, 'pear')
(3, 'banana')
(3, 'orange')
(3, 'pear')
(4, 'banana')
(4, 'orange')
(4, 'pear')
(5, 'banana')
(5, 'orange')
(5, 'pear')
Можно ли отредактировать это в dbml? Лично, я склонен рассматривать автоматически сгенерированные типы (от функций и хранимых процедур) как DTOs, которые локальны для DAL, таким образом, я сразу повторно отображаю их на свое собственное ПОСТЕПЕННО представление - т.е.
var qry = from row in ctx.SomeProc(12345)
select new Foo {ID = row.ID, Name = row.Name };
и т.д. Ре второй вопрос "Кроме того, как можно выполнить запрос linq на наборе результатов хранимой процедуры?" - я рекомендовал бы использовать UDF вместо хранимой процедуры, если Вы хотите составить его: это позволяет Вам делать состав в базе данных, например, подкачка страниц и фильтрация:
var qry = (from row in ctx.SomeFunction(12345)
where row.IsActive
select row).Skip(10).Take(10);
который должен (в LINQ-SQL, по крайней мере), делают все в TSQL в сервере. Иначе можно звонить AsEnumerable()
и используйте LINQ к объектам при вызове слой.NET:
var qry = (from row in ctx.SomeProc(12345).AsEnumerable()
where row.IsActive
select row).Skip(10).Take(10);
Отредактировать dbml (который является просто xml), изменение ElementType/@Name
здесь:
<Function Name="dbo.CustOrderHist" Method="CustOrderHist">
<Parameter Name="CustomerID" Parameter="customerID" Type="System.String" DbType="NChar(5)" />
<ElementType Name="FooBar"> <!-- ********** HERE ************ -->
<Column Name="ProductName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="false" />
<Column Name="Total" Type="System.Int32" DbType="Int" CanBeNull="true" />
</ElementType>
</Function>
Кроме того, как можно выполнить запрос linq на наборе результатов хранимой процедуры?
var query = from results in datacontext.storedprocedurename()
where results.whatever == 1
select results;