Нет, вы можете назвать функцию по своему усмотрению.
Очевидно, что также важно правильно называть вашу функцию, и это одна из основных причин:
Функция получает имя, которое также используется для генерации URL для этой конкретной функции, и возвращает сообщение, которое мы хотим отобразить в браузере пользователя.
blockquote>Вот пример того, почему использование соответствующего имени функции очень удобно (пример использования url_for):
from flask import Flask, url_for app = Flask(__name__) @app.route('/') def index(): return 'index' @app.route('/login') def login(): return 'login' @app.route('/user/
') def profile(username): return '{}\'s profile'.format(username) with app.test_request_context(): print(url_for('index')) print(url_for('login')) print(url_for('login', next='/')) print(url_for('profile', username='John Doe')) Вы можете прочитать эту информацию, другие подробности в Документация Flask [111 ].
Привет, вот как вы можете выбрать отдельные записи с помощью внутреннего соединения. Надеюсь, это поможет
var distinctrecords =
(entity.Table.Join(entity.Table2, x => x.Column, y => y.Column, (x, y) => new {x, y})
.Select(@t => new {@t.x.Column2, @t.y.Column3}))
.GroupBy(t => t.Column2)
.Select(g => g.FirstOrDefault());
Distinct ()
не работает должным образом, потому что он не отправляет предикат DISTINCT SQL в базу данных. Вместо этого используйте group
:
var distinctResult = from c in result
group c by c.Id into uniqueIds
select uniqueIds.FirstOrDefault();
Группа LINQ фактически создает подгруппы сущностей, для которых используется указанное вами свойство:
Smith
John
Mary
Ed
Jones
Jerry
Bob
Sally
Синтаксис выше возвращает ключи, в результате чего получается отдельный список. Дополнительная информация здесь:
Чисто LINQ способ, который имеет место, - это группировка по имени, выбор отдельных групп по ключу, затем выборка на основе этого.
from i in user
group new {i.ID, i.Country, i.DateRecord} by i.Name into byNmGp
select byNmGp.First();
Edit: Entity Framework, конечно, очень популярный поставщик linq, но он не очень хорошо обрабатывает First()
, хотя логически эквивалентный (в данном случае) FirstOrDefault()
будет работать нормально. Я предпочитаю First()
, когда ограничения EF не вынуждают использовать FirstOrDefault()
, потому что его смысл лучше соответствует тому, что ищется здесь.
Другой способ - определить класс-помощник:
private class MyRecord : IEquatable<MyRecord>
{
public int ID;
public string Name;
public string Country;
public DateTime DateCreated;
public bool Equals(MyRecord other)
{
return Name.Equals(other.Name);
}
public override bool Equals(object obj)
{
return obj is MyRecord && Equals((MyRecord)obj);
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
}
/*...*/
var items = (from i in user select new MyRecord {i.ID, i.Name, i.Country, i.DateRecord}).Distinct();
Это просто по-разному определяет различия. Производительность будет зависеть от того, сможет ли поставщик запросов интерпретировать это определение равенства или нет. Удобство будет зависеть от того, есть ли у вас похожие LINQ-запросы, выполняющие практически одно и то же, или нет.